我正在使用.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 关注
- 367 浏览
添加回答
举报
0/150
提交
取消