이것은 사소한 문제처럼 보입니다.하지만 웹에서이 사이트에서도 답변을 검색하면 명시 적으로 질문해야합니다.문제 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) 그것이 존재하지 않으면 생성해야한다고 더 추측합니다. 그러나 이것을하는 방법?
덕분에,
마이크
계정에 FTP 서버에 파일을 만들 권한이 있는지 확인 했습니까? – JNappi
'c : \ File.txt'와 같은 절대 파일 경로이거나'File.txt'와 같은 파일 이름 인'fileToUpload'에 무엇을 전달하고 있습니까? 또한, 프로그램이 텍스트 파일에서만 작동한다는 것을 알고 있습니까? –
@JNappi : 쓰기 권한이있는 사용자의 FTP 자격 증명 (두 서버를 모두 제어하므로이를 확인할 수 있음)은 사용 권한 문제가 아닙니다. – mikerennick