weixin_49934858 2023-04-03 23:49 采纳率: 50%
浏览 14
已结题

如何.netcore 从ftp下载多个文件到本地

请教一下,如何从ftp下载多个文件到本地,并将多个文件打包,.net core web开发

  • 写回答

1条回答 默认 最新

  • L30412376_ 2023-04-04 00:46
    关注

    可以使用System.Net.FtpWebRequest类来从FTP服务器上下载文件,可以使用System.IO.Compression.ZipFile类来创建压缩文件,打包多个文件。下面演示一下:

    using System;
    using System.IO;
    using System.Net;
    
    namespace DownloadAndZipFilesFromFTP
    {
        class Program
        {
            static void Main(string[] args)
            {
                // FTP server credentials
                string ftpServer = "ftp://example.com/";
                string userName = "user";
                string password = "password";
    
                // Local directory to save files
                string localDirectory = @"C:\DownloadedFiles";
    
                // Files to download and zip
                string[] filesToDownload = { "file1.txt", "file2.txt", "file3.txt" };
                string zipFileName = "DownloadedFiles.zip";
    
                // Download files
                foreach (string fileName in filesToDownload)
                {
                    DownloadFileFromFTP(ftpServer, userName, password, fileName, localDirectory);
                }
    
                // Zip files
                string[] filesToZip = Directory.GetFiles(localDirectory);
                string zipFilePath = Path.Combine(localDirectory, zipFileName);
                ZipFiles(filesToZip, zipFilePath);
    
                Console.WriteLine("Files downloaded and zipped successfully.");
            }
    
            // Download a file from FTP server
            static void DownloadFileFromFTP(string ftpServer, string userName, string password, string fileName, string localDirectory)
            {
                string ftpFilePath = ftpServer + fileName;
                string localFilePath = Path.Combine(localDirectory, fileName);
    
                // Create FTP request
                FtpWebRequest request = (FtpWebRequest)WebRequest.Create(ftpFilePath);
                request.Method = WebRequestMethods.Ftp.DownloadFile;
                request.Credentials = new NetworkCredential(userName, password);
    
                // Download file
                using (FtpWebResponse response = (FtpWebResponse)request.GetResponse())
                using (Stream responseStream = response.GetResponseStream())
                using (FileStream fileStream = new FileStream(localFilePath, FileMode.Create))
                {
                    responseStream.CopyTo(fileStream);
                }
    
                Console.WriteLine($"File {fileName} downloaded successfully.");
            }
    
            // Zip multiple files into one zip file
            static void ZipFiles(string[] filesToZip, string zipFilePath)
            {
                // Create zip file
                ZipFile.CreateFromDirectory(filesToZip[0], zipFilePath);
    
                // Add files to zip file
                using (ZipArchive zip = ZipFile.Open(zipFilePath, ZipArchiveMode.Update))
                {
                    for (int i = 1; i < filesToZip.Length; i++)
                    {
                        zip.CreateEntryFromFile(filesToZip[i], Path.GetFileName(filesToZip[i]));
                    }
                }
    
                Console.WriteLine($"Files zipped successfully to {zipFilePath}.");
            }
        }
    }
    
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 4月12日
  • 已采纳回答 4月4日
  • 创建了问题 4月3日

悬赏问题

  • ¥20 java在应用程序里获取不到扬声器设备
  • ¥15 echarts动画效果的问题,请帮我添加一个动画。不要机器人回答。
  • ¥60 许可证msc licensing软件报错显示已有相同版本软件,但是下一步显示无法读取日志目录。
  • ¥15 Attention is all you need 的代码运行
  • ¥15 一个服务器已经有一个系统了如果用usb再装一个系统,原来的系统会被覆盖掉吗
  • ¥15 使用esm_msa1_t12_100M_UR50S蛋白质语言模型进行零样本预测时,终端显示出了sequence handled的进度条,但是并不出结果就自动终止回到命令提示行了是怎么回事:
  • ¥15 前置放大电路与功率放大电路相连放大倍数出现问题
  • ¥30 关于<main>标签页面跳转的问题
  • ¥80 部署运行web自动化项目
  • ¥15 腾讯云如何建立同一个项目中物模型之间的联系