C# 通过FTP传输加密文件,解密时损坏

C# 通过FTP传输加密文件,解密时损坏,c#,ftp,C#,Ftp,使用下面的代码,我试图上传一个加密文件到FTP服务器。 从ftp服务器下载文件时,它们都已损坏 FtpWebRequest request = (FtpWebRequest)WebRequest.Create(url); request.Method = WebRequestMethods.Ftp.UploadFile; request.Credentials = new NetworkCredential( user, pass); StreamReader sourceS

使用下面的代码,我试图上传一个加密文件到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();

有什么问题吗?

看起来您正在将任意二进制数据读入
StreamReader

不要那样做

StreamReader
s读取文本;将原始二进制数据传递到StreamReader将删除所有无效代码点


相反,您应该只使用
字节[]

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

不要往返到ASCII。损坏所有字节>127.Uncomment
byte[]fileContents=File.ReadAllBytes(tempfilepath)