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日

悬赏问题

  • ¥15 2024-五一综合模拟赛
  • ¥15 下图接收小电路,谁知道原理
  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度
  • ¥30 关于#r语言#的问题:如何对R语言中mfgarch包中构建的garch-midas模型进行样本内长期波动率预测和样本外长期波动率预测
  • ¥15 ETLCloud 处理json多层级问题
  • ¥15 matlab中使用gurobi时报错
  • ¥15 这个主板怎么能扩出一两个sata口
  • ¥15 不是,这到底错哪儿了😭