为了账号安全,请及时绑定邮箱和手机立即绑定

在C#/。NET中向FTP服务器上载二进制文件或从FTP服务器下载二进制文件

在C#/。NET中向FTP服务器上载二进制文件或从FTP服务器下载二进制文件

撒科打诨 2019-10-12 10:42:46
我正在使用.NET 4 C#。我正在尝试上传ZIP文件,然后将其下载到(我的)服务器。对于上传我有using (WebClient client = new WebClient()){    FtpWebRequest request = (FtpWebRequest)WebRequest.Create(MyUrl);    request.Method = WebRequestMethods.Ftp.UploadFile;    request.EnableSsl = false;    request.Credentials = new NetworkCredential(MyLogin, MyPassword);    byte[] fileContents = null;    using (StreamReader sourceStream = new StreamReader(LocalFilePath))    {        fileContents = Encoding.UTF8.GetBytes(sourceStream.ReadToEnd());    }    request.ContentLength = fileContents.Length;    using (Stream requestStream = request.GetRequestStream())    {        requestStream.Write(fileContents, 0, fileContents.Length);    }    FtpWebResponse response = null;    response = (FtpWebResponse)request.GetResponse();    response.Close();}这似乎可行,因为我在服务器上获得了正确大小的文件。1)我如何流式传输它,而不是先将其加载到内存中?我将上传非常大的文件。对于下载,我有using (WebClient client = new WebClient()){    string HtmlResult = String.Empty;    FtpWebRequest request = (FtpWebRequest)WebRequest.Create(remoteFile);    request.Method = WebRequestMethods.Ftp.DownloadFile;    request.EnableSsl = false;    request.Credentials = new NetworkCredential(MyLogin, MyPassword);    using (FtpWebResponse response = (FtpWebResponse)request.GetResponse())    using (Stream responseStream = response.GetResponseStream())    using (StreamReader reader = new StreamReader(responseStream))    using (FileStream writer = new FileStream(localFilename, FileMode.Create))    {        long length = response.ContentLength;        int bufferSize = 2048;        int readCount;        byte[] buffer = new byte[2048];        readCount = responseStream.Read(buffer, 0, bufferSize);        while (readCount > 0)        {            writer.Write(buffer, 0, readCount);            readCount = responseStream.Read(buffer, 0, bufferSize);        }    }}2)一切似乎都可以正常工作……除了当我尝试解压缩下载的ZIP文件时,我得到的是无效的ZIP文件。
查看完整描述

1 回答

  • 1 回答
  • 0 关注
  • 338 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信