我正在使用的代码波纹管上传一个zip文件到我的FTP服务器:C#:ftp上传成功,但dowloaded文件被损坏
string zipPath = @"d:\files\start.zip";
string ftpPath = ("ftp://######/start.zip");
WebRequest request = WebRequest.Create(ftpPath);
request.Method = WebRequestMethods.Ftp.UploadFile;
request.Credentials = new NetworkCredential("######", "######");
StreamReader sourceStream = new StreamReader(zipPath);
byte[] fileContents = Encoding.Unicode.GetBytes(sourceStream.ReadToEnd());
sourceStream.Close();
request.ContentLength = fileContents.Length;
try
{
Stream requestStream = request.GetRequestStream();
requestStream.Write(fileContents, 0, fileContents.Length);
requestStream.Close();
FtpWebResponse makeFileUploadResponse = (FtpWebResponse)request.GetResponse();
}
catch
{
MessageBox.Show("ftp failed!");
}
我的zip压缩包,绝对是有效的(我可以打开它并提取它),但是当我下载上传的zip文件时,我收到了归档被损坏的错误。
更新1:我的源代码是从MSDN的文章:How to: Upload Files with FTP
为什么你需要二进制内容的'Unicode.GetBytes()'?你尝试过'byte [] fileContents = File.ReadAllBytes(zipPath)'而不是? –
这只是基于我提到的MSDN文章。 – wiki
是的,但他们上传了一个文本文件,其中UTF8编码实际上是有意义的(但是如果它们逐字节地传输,它们仍应该工作)。对于像'.zip'文件这样的二进制文件,对我来说这似乎没有意义。 –