我正在尝试上传一个邮编使用C# (Framework 4)
的文件到服务器,以下是我的代码。使用C#上传到服务器后,Zip文件被损坏
string ftpUrl = ConfigurationManager.AppSettings["ftpAddress"];
string ftpUsername = ConfigurationManager.AppSettings["ftpUsername"];
string ftpPassword = ConfigurationManager.AppSettings["ftpPassword"];
FtpWebRequest request = (FtpWebRequest)WebRequest.Create(ftpUrl + "Transactions.zip");
request.Proxy = new WebProxy(); //-----The requested FTP command is not supported when using HTTP proxy.
request.Method = WebRequestMethods.Ftp.UploadFile;
request.Credentials = new NetworkCredential(ftpUsername, ftpPassword);
StreamReader sourceStream = new StreamReader(fileToBeUploaded);
byte[] fileContents = Encoding.UTF8.GetBytes(sourceStream.ReadToEnd());
sourceStream.Close();
request.ContentLength = fileContents.Length;
Stream requestStream = request.GetRequestStream();
requestStream.Write(fileContents, 0, fileContents.Length);
requestStream.Close();
FtpWebResponse response = (FtpWebResponse)request.GetResponse();
Console.WriteLine("Upload File Complete, status {0}", response.StatusDescription);
response.Close();
的zip文件上传成功,但是当我试图打开从服务器(手动)的zip文件,这表明我Unexpected end of archive
错误。
对于文件压缩,我使用的是Ionic.zip dll
。在传输zip文件之前,我能够成功提取。
任何帮助表示赞赏。谢谢。
尝试避免sourceStream.ReadToEnd()并直接从sourceStream复制字节到requestStream – 2013-05-11 09:44:17