다음 코드는 서버에서 파일을 다운로드하는 데 사용됩니다.이 파일은 텍스트 파일로 작동합니다. 이 코드는 MSDN 샘플에서 가져온 것입니다.ftp가 exe 및 dll 파일을 손상시킵니다 (C#)
public void DownloadFile(string serverPath, string localPath)
{
try
{
FtpWebRequest request = (FtpWebRequest)WebRequest.Create("ftp://" + serverPath);
request.Method = WebRequestMethods.Ftp.DownloadFile;
request.Credentials = new NetworkCredential(_domain + "\\" + _username, _password);
FtpWebResponse response = (FtpWebResponse)request.GetResponse();
Stream responseStream = response.GetResponseStream();
StreamReader reader = new StreamReader(responseStream);
string contents = reader.ReadToEnd();
File.WriteAllText(localPath, contents);
reader.Close();
response.Close();
}
catch (WebException ex)
{
string exMsg = string.Empty;
//add more error codes
FtpWebResponse response = (FtpWebResponse)ex.Response;
MessageBox.Show(response.StatusCode.ToString());
switch(response.StatusCode) {
case FtpStatusCode.NotLoggedIn:
exMsg = "wrong password";
break;
case FtpStatusCode.ActionNotTakenFileUnavailable:
exMsg = "file you are trying to load is not found";
break;
default:
exMsg = "The server is inaccessible or taking too long to respond.";
break;
}
throw new Exception(exMsg);
}
return;
}
그러나 dll과 exe는 손상됩니다. 어떤 아이디어가 범인입니까?
File.WriteAllText의 인코딩이 잘못되었을 수 있습니다. WriteAllText의 기본 인코딩은 utf8입니다. –