2012-10-28 2 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 읽기 텍스트; 원시 이진 데이터를 StreamReader로 전달하면 잘못된 코드 포인트가 모두 삭제됩니다.

그 대신, 순전히 Stream 또는 byte[]으로 작업해야합니다.

0

문제 해결 ... 불행히도 그것은 매우 어리석은 문제 였으므로 아무에게도 도움이되지 않습니다. 실제로 암호화되지 않은 파일을 업로드 했으므로 암호를 해독하면 분명히 작동하지 않습니다.

관련 문제