体检系统架构
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

65 lines
2.4 KiB

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System;
using System.IO;
using System.Net;
using DicomTool.Model;
namespace DicomTool
{
public static class FtpHelper
{
public static void DownloadFtpFile(List<ReportEcg> ftpUriList, string username, string password, string localFilePath)
{
// 确保本地文件路径是目录
if (!Directory.Exists(localFilePath))
{
Directory.CreateDirectory(localFilePath);
}
foreach (var reportEcg in ftpUriList)
{
// 创建 FtpWebRequest 对象
var request = (FtpWebRequest)WebRequest.Create(reportEcg.ReportUrl);
request.Method = WebRequestMethods.Ftp.DownloadFile;
request.Credentials = new NetworkCredential(username, password);
try
{
// 获取响应并读取数据
var response = (FtpWebResponse)request.GetResponse();
var responseStream = response.GetResponseStream();
// 获取文件名
// string fileName = Path.GetFileName(new Uri(reportEcg.ReportUrl).LocalPath);
var fileName = reportEcg.ID + ".jpg";
Console.WriteLine("【下载】"+ reportEcg.ID + ".jpg");
var localFileFullPath = Path.Combine(localFilePath, fileName);
// 将 FTP 文件内容写入本地文件
using (FileStream fileStream = new FileStream(localFileFullPath, FileMode.Create, FileAccess.Write))
{
byte[] buffer = new byte[4096];
int bytesRead;
while ((bytesRead = responseStream.Read(buffer, 0, buffer.Length)) != 0)
{
fileStream.Write(buffer, 0, bytesRead);
}
}
responseStream.Close();
response.Close();
}
catch (WebException ex)
{
// 处理异常,例如打印错误信息
Console.WriteLine("Download failed for " + reportEcg + ": " + ex.Message);
}
}
}
}
}