请教一下,如何从ftp下载多个文件到本地,并将多个文件打包,.net core web开发
可以使用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}.");
}
}
}