2012-10-28 116 views
0

使用下面的代码我试图将加密文件上传到FTP服务器。 从ftp服务器下载文件时,它们全部损坏。通过FTP传输加密文件,解密时损坏

FtpWebRequest request = (FtpWebRequest)WebRequest.Create(url); 
request.Method = WebRequestMethods.Ftp.UploadFile; 
request.Credentials = new NetworkCredential(
    user, 
    pass); 

StreamReader sourceStream = new StreamReader(tempfilepath); 
byte[] fileContents = ASCIIEncoding.ASCII.GetBytes(sourceStream.ReadToEnd()); // uploads corrupted files 
//byte[] fileContents = File.ReadAllBytes(tempfilepath); 
sourceStream.Close(); 
request.ContentLength = fileContents.Length; 

Stream requestStream = request.GetRequestStream(); 
requestStream.Write(fileContents, 0, fileContents.Length); 
requestStream.Close(); 

// Shows confirm message 
FtpWebResponse response = (FtpWebResponse)request.GetResponse(); 
response.Close(); 

任何线索可能是什么问题?

+0

不要往返ASCII。这会破坏所有字节> 127。 – CodesInChaos

+1

取消注释'byte [] fileContents = File.ReadAllBytes(tempfilepath);' –

回答

2

它看起来像你正在读取任意二进制数据到StreamReader
不要这样做。

StreamReader s read text;将原始二进制数据传递到StreamReader将删除所有无效的代码点。

相反,你应该纯粹与Streambyte[]工作。

0

问题解决了...不幸的是,这是一个非常愚蠢的问题,所以它不会真的帮助任何人。 我实际上传了未加密的文件,所以当我解密它时,显然它不会工作。