파일을 클라이언트의 ftp 사이트 중 하나에 업로드하기 위해 작은 Windows Forms 응용 프로그램을 만들었습니다. 그러나 내가 겪고있는 문제는 로컬 컴퓨터 에서이 응용 프로그램을 실행할 때 파일을 성공적으로 업로드한다는 것입니다. 하지만 서버에서이 프로그램을 실행하면이 오류 메시지가 나타납니다.
remote server returned an error: (550) File unavailable (eg, file not found, can not access the file), on this line 'objFTPRequest.GetRequestStream();'.
아무도 이유를 아는 사람이 있습니까? 방화벽 등을 구성해야합니까? 여기 내 코드가 있습니다;
FileInfo objFile = new FileInfo(filename);
FtpWebRequest objFTPRequest;
// Create FtpWebRequest object
objFTPRequest = (FtpWebRequest)FtpWebRequest.Create(new Uri("ftp://" + ftpServerIP + "/outbox/" + objFile.Name));
// Set Credintials
objFTPRequest.Credentials = new NetworkCredential(ftpUserName, ftpPassword);
// By default KeepAlive is true, where the control connection is
// not closed after a command is executed.
objFTPRequest.KeepAlive = false;
// Set the data transfer type.
objFTPRequest.UseBinary = true;
// Set content length
objFTPRequest.ContentLength = objFile.Length;
// Set request method
objFTPRequest.Method = WebRequestMethods.Ftp.UploadFile;
// Set buffer size
int intBufferLength = 16 * 1024;
byte[] objBuffer = new byte[intBufferLength];
// Opens a file to read
FileStream objFileStream = objFile.OpenRead();
// Get Stream of the file
Stream objStream = objFTPRequest.GetRequestStream();
int len = 0;
while ((len = objFileStream.Read(objBuffer, 0, intBufferLength)) != 0)
{
// Write file Content
objStream.Write(objBuffer, 0, len);
}
objStream.Close();
objFileStream.Close();
- 답변 # 1
- 답변 # 2
다음을 시도하십시오 : ftp : //xxx.xxx.xx.xx : 21 // path/filename
서버 주소 뒤의 "//"는 루트 디렉토리에서 시작합니다. 비록 내가 가지고 있지만 : ftp : //xxx.xxx.xx.xx : 21/path/filename, 올바른 디렉토리로 이동하지 못했습니다.
- 답변 # 3
같은 문제가 발생하여 다음과 같이했습니다.
<올>운영 체제에 쓰기 권한이 있는지 확인하십시오. ftp 폴더 찾기 =>오른쪽 click =>properties =>보안,해야 할 일을 알아야합니다
ftp 서버가 로그인 한 사용자에게 쓰기 권한이 있는지 확인하십시오. IIS를 열고 =>ftp 사이트를 클릭하십시오. =>ftp 인증 규칙 =>추가 허용 규칙 =>사용자 또는 그룹을 선택하여 권한 설정
ftp 서버에서 디렉토리를 확인하고, 항목 2에서 동일한 작업을 수행하십시오.
네 가지 그림을 사용하여 설정할 권한을 표시 할 수 있습니다.
- 답변 # 4
더 간단 할 수 있습니다
유사한 문제에 직면하여 제안 된 모든 솔루션을 시도했지만 아무도 작동하지 않습니다. 다음과 같이 간단한 방법으로 알아 봅니다. 살펴보기
끝에 잘못된 코드
Dim request As Net.FtpWebRequest = CType(FtpWebRequest.Create("ftp://xxx.xxx.xxx.xxx/files"), FtpWebRequest)
이 간단한 것으로 바꾸십시오 :
Dim request As Net.FtpWebRequest = CType(FtpWebRequest.Create("ftp://xxx.xxx.xxx.xxx/files/youfilename.ext"), FtpWebRequest)
그런 다음 채우기 요청을 처리하고 서버로 보내기 :)
그게 다야
서버에 대한 모든 권한이 제대로 작동하고 올바른 자격 증명을 사용하고 있는지 확인하십시오.
- 답변 # 5
이 문제를 해결하려면 System.Net.FtpWebRequest 명령을 강제로 되돌려 야합니다. .Net Framework 2.0/3.5에서 작동하는 방법에 대한 이전 동작과 실제 명령을 실행하기 전에 추가 CWD 명령을 발행합니다.
이 작업을 수행하려면 System.Net.FtpWebRequest 클래스의 인스턴스를 호출하기 전에 다음 코드를 배치해야합니다. 아래 코드는 전체 애플리케이션 도메인의 설정이 변경되므로 한 번만 호출하면됩니다.
private static void SetMethodRequiresCWD() { Type requestType = typeof(FtpWebRequest); FieldInfo methodInfoField = requestType.GetField("m_MethodInfo", BindingFlags.NonPublic | BindingFlags.Instance); Type methodInfoType = methodInfoField.FieldType; FieldInfo knownMethodsField = methodInfoType.GetField("KnownMethodInfo", BindingFlags.Static | BindingFlags.NonPublic); Array knownMethodsArray = (Array)knownMethodsField.GetValue(null); FieldInfo flagsField = methodInfoType.GetField("Flags", BindingFlags.NonPublic | BindingFlags.Instance); int MustChangeWorkingDirectoryToPath = 0x100; foreach (object knownMethod in knownMethodsArray) { int flags = (int)flagsField.GetValue(knownMethod); flags |= MustChangeWorkingDirectoryToPath; flagsField.SetValue(knownMethod, flags); } }
http://support.microsoft.com/kb/2134299
- OpenCv의 폴더에서 여러 이미지 읽기 (python)
- 파이썬 셀레늄 모든 "href"속성 가져 오기
- html - 자바 스크립트 - 클릭 후 변경 버튼 텍스트 변경
- javascript - 현재 URL에서 특정 div 만 새로 고침/새로 고침
- JSP에 대한 클래스를 컴파일 할 수 없습니다
- JavaScript 변수를 HTML div에 '출력'하는 방법
- git commit - 자식 - 로컬 커밋 된 파일에 대한 변경을 취소하는 방법
- jquery - JavaScript로 현재 세션 값을 얻으시겠습니까?
- javascript - swiperjs에서 정지, 재생 버튼 추가
- python - 화면에서 찾은 요소를 찾을 수없는 경우 셀레늄
이 오류는 서버에 파일이 없거나 파일에 대한 보안 권한 등과 같은 여러 가지 이유로 인해 발생할 수 있습니다.
먼저 오류의 정확한 원인을 찾아야합니다. 이것은 다음 코드를 사용하여 달성 할 수 있습니다-
정확한 오류의 원인을 찾으면 앞으로 해결할 수 있습니다.
여기에 참조 할 수있는 링크가 있습니다
http://forums.asp.net/t/1777881.aspx/1
http://nickstips.wordpress.com/2010/10/25/c-ftp-upload-error-the-remote-server-returned-an-error-550-file-unavailable-eg-file-not -found-no-access/
http://www.dreamincode.net/forums/topic/76361-file-upload-to-server/
http://forums.asp.net/t/1374306.aspx/1