2017-10-05 245 views
3

ftp를 통해 파일을 호스트에 업로드해야합니다. 호스트의 루트에 생성 된 /home2/travele2 경로 enter image description here원격 서버에서 오류를 반환했습니다 : FtpWebRequest를 사용하여 FTP에 파일 업로드시 (550)

내가 호스트에 FileZilla의 프로그램을 통해 파일을 업로드 할 수 있습니다,하지만 난 웹 사이트를 통해 파일을 업로드하려고 할 때, 그것은 나에게이 오류 가져옵니다

The remote server returned an error: (550) File unavailable (e.g., file not found, no access).

무엇 문제는 무엇입니까?

// Get the object used to communicate with the server. 
FtpWebRequest ftpWebRequest = (FtpWebRequest)WebRequest.Create("ftp://00.00.00.00/home2/travele2"); 
ftpWebRequest.Method = WebRequestMethods.Ftp.UploadFile; 
// This example assumes the FTP site uses anonymous logon. 
ftpWebRequest.Credentials = new NetworkCredential("aaaaaaa", "0000000"); 

// Copy the contents of the file to the request stream. 
StreamReader sourceStream = new StreamReader(Server.MapPath("/Content/Site.pdf")); 
byte[] fileContents = Encoding.UTF8.GetBytes(sourceStream.ReadToEnd()); 
sourceStream.Close(); 
ftpWebRequest.ContentLength = fileContents.Length; 

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

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

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

response.Close(); 

enter image description here

+0

을 오류가이 라인에서 오는 것 같다 :'에서는 FtpWebRequest에서는 FtpWebRequest = (에서는 FtpWebRequest)이 WebRequest.Create ("ftp://00.00.00.00/home2/travele2") ; '(이 폴더에 대한 권한이 있고 파일이 있습니까?). try-catch 블록을'WebException'과 함께 사용하면'var status = ((FtpWebResponse) e.Response) .StatusDescription; '에 실제 문제가 있습니다. –

+0

무슨 권한이 필요합니까? – programmer138200

+0

폴더 쓰기 접근 권한 ... 당신이 이미 그 폴더에 대한 파일 쓰기 권한을 부여 받았다고 가정 할 때, 앞서 언급 한 것처럼'WebException'으로 그 원인을 찾을 수 있습니다. –

답변

3

URL은 대상 파일 이름을 포함합니다 :

FtpWebRequest ftpWebRequest = 
    (FtpWebRequest)WebRequest.Create("ftp://ftp.example.com/home2/travele2/Site.pdf"); 

어떻게 그렇지 않으면 FtpWebRequest 아는 것을, 어떤 이름을 사용 하는가?


그리고 당신은 그 해결 한 후, 당신은 당신이 UTF-8로 인코딩 된 텍스트로 파일을 치료로 업로드 파일을 손상 것을 발견 할 것이다. PDF는 바이너리 파일이므로 말도 안되는 것은 무엇입니까?

올바른 코드 내용은 다음을 참조하십시오
Upload and download a binary file to/from FTP server in C#/.NET

+0

고마워요. 해결 된 – programmer138200

+0

텍스트 파일을 업로드하고 현재 다운로드 할 수 있습니다! 그러나 다운로드 파일이나 파일을 업로드 한 후 이미지 또는 pdf 파일을 업로드 할 때. 이미지를 열 수 없습니다. – programmer138200

+0

물론, 나는 그 대답의 두 번째 부분에서 그것을 다루었 다. –

-1

당신이 종류의 비린내 .. 나는 nuget 라이브러리 FTP 클라이언트를 다운로드하는 것이 좋습니다 보이는 당신의 sourceStream를로드하는 방법은, 그것은 당신의 인생을 훨씬 쉽게 만들 것입니다. FluentFTP는 좋은 문서와 예제가있는 좋은 선택입니다.

를 체크 아웃 : https://github.com/robinrodricks/FluentFTP

+0

소프트웨어를 추천 할 때 프로젝트에 가입했는지 여부를 명시해야합니다. – Fildor

+0

우선 오픈 소스 라이브러리입니다 ... 그리고이 프로젝트와 어떤 관련도 없습니다. – kioannou