如果你想压缩内存中的字符串(postData
)并将 zip 上传到 FTP 服务器,您可以使用:
using (var memoryStream = new MemoryStream())
{
using (var archive = new ZipArchive(memoryStream, ZipArchiveMode.Create, true))
{
// Repeat this block, if you want to add more files
ZipArchiveEntry entry = archive.CreateEntry("void.dat");
using (Stream entryStream = entry.Open())
using (var writer = new StreamWriter(entryStream, Encoding.UTF8))
{
writer.Write(postData);
}
}
memoryStream.Seek(0, SeekOrigin.Begin);
var request = WebRequest.Create("ftp://ftp.example.com/remote/path/archive.zip");
request.Credentials = new NetworkCredential("username", "password");
request.Method = WebRequestMethods.Ftp.UploadFile;
using (Stream ftpStream = request.GetRequestStream())
{
memoryStream.CopyTo(ftpStream);
}
}
如果文本很小,那么内存占用并不重要,您可以简化上传代码(一切都来自memoryStream.Seek
到最后)到:
var client = new WebClient();
client.Credentials = new NetworkCredential("username", "password");
client.UploadData(
"ftp://ftp.example.com/remote/path/archive.zip", memoryStream.ToArray());
基于在 C# 中压缩目录并上传到 FTP 服务器,而不将 .zip 文件保存在本地 https://stackoverflow.com/q/46682983/850848.
关于相反操作的相关问题:
如何使用 C# 将数据从存储在 FTP 服务器上的 ZIP 文件导入到数据库 https://stackoverflow.com/q/66370122/850848