2011-08-24 4 views
0

이것은 사소한 문제처럼 보입니다.하지만 웹에서이 사이트에서도 답변을 검색하면 명시 적으로 질문해야합니다.문제 FTP 서버에 파일이없는 경우 FtpWebRequest를 사용하여 FTP를 통해 파일 업로드

FTP를 통해 내 서버에서 원격 서버로 파일을 업로드하고 있습니다. 내 코드는 다음과 같습니다 ...

public void Upload(string fileToUpload) 
    { 
     // Get the object used to communicate with the server. 
     FtpWebRequest request = (FtpWebRequest)WebRequest.Create("ftp://www.remoteserver.com/Data/" + fileToUpload); 
     request.UsePassive = false; 
     request.UseBinary = true; 
     request.Method = WebRequestMethods.Ftp.UploadFile; 
     request.Credentials = new NetworkCredential ("username","password"); 

     // Copy the contents of the file to the request stream. 
     StreamReader sourceStream = new StreamReader(fileToUpload); 
     byte [] fileContents = Encoding.UTF8.GetBytes(sourceStream.ReadToEnd()); 
     sourceStream.Close(); 
     request.ContentLength = fileContents.Length; 

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

     FtpWebResponse response = (FtpWebResponse)request.GetResponse(); 

     Console.WriteLine("Upload File Complete, status {0}", response.StatusDescription); 

     response.Close(); 
    } 

이 모든 것은 매우 간단합니다. 내가 가지고있는 문제는 원격 서버에 파일이없는 경우 550 오류가 발생한다는 것입니다. 나는 파일 doe snot이 존재한다면 파일이 생성 될 것이라고 가정 할 것이다. 더 나아가, 나는 그것이 그렇게된다면 그것을 덮어 쓸 것이라고 가정한다.

적어도 (새 파일을 쓰는 것 이상으로)이 경우가 아니기 때문에, 나는 (a) 어떻게 든 먼저 파일을 확인하고 (b) 그것이 존재하지 않으면 생성해야한다고 더 추측합니다. 그러나 이것을하는 방법?

덕분에,

마이크

+0

계정에 FTP 서버에 파일을 만들 권한이 있는지 확인 했습니까? – JNappi

+0

'c : \ File.txt'와 같은 절대 파일 경로이거나'File.txt'와 같은 파일 이름 인'fileToUpload'에 무엇을 전달하고 있습니까? 또한, 프로그램이 텍스트 파일에서만 작동한다는 것을 알고 있습니까? –

+0

@JNappi : 쓰기 권한이있는 사용자의 FTP 자격 증명 (두 서버를 모두 제어하므로이를 확인할 수 있음)은 사용 권한 문제가 아닙니다. – mikerennick

답변

0

당신이 fileToUpload에 전달 무엇

, c:\File.txt 또는 File.txt 같은 단지 파일 이름과 같은 절대 파일 경로를 (주석 대답로 변환)? 또한, 프로그램이 텍스트 파일에서만 작동한다는 것을 알고 있습니까?

+0

고마워 ... 내가 여기에 매개 변수를 디버깅하기 위해 온다고 믿을 수 없다.) ... 그러나 그럼에도 불구하고 많이 감사했다. – mikerennick

관련 문제