ftpwebrequest (.net)를 사용하여 디렉토리를 어떻게 변경합니까?
-
11-07-2019 - |
문제
누군가 ftpwebrequest를 사용하여 디렉토리를 변경하는 방법을 알려줄 수 있습니까? 이것은 쉬운 일인 것 같지만 나는 그것을 보지 못합니다.
편집하다
나는 단지 추가하고 싶다 ... 나는 내 마음이 ftpwebrequest에 설정되어 있지 않다. .NET에서 FTP를 수행하는 더 나은 (더 쉬운) 방법이 있다면 알려주십시오.
분명히 라이브 연결을 사용하여 수행 할 수있는 방법이 없으므로 FTPWebRequest (JON에 감사하는)를 사용하여 FTPWebRequest를 속이려면 URI를 변경해야합니다.
그래서 저는 제 3 자 고객을 찾고 있습니다 ...
내가 시도한 오픈 소스 솔루션 중 일부는 너무 잘 작동하지 않았지만 (계속 충돌하고 있음) 예비 테스트 중 일부를 통과 한 오픈 소스 솔루션 중 하나를 발견했습니다..NET FTP 클라이언트).
해결책
거기에 블로그 게시물 마리야 아타 나 소바 (Mariya Atanasova)에서 가짜가 어떻게 가짜를 할 수 있는지 보여줍니다. 기본적으로 디렉토리를 URL에 넣어야합니다.
전용 FTP 라이브러리를 사용하면 더 나을 수 있다고 생각합니다. 이를 위해 제 3 자 라이브러리를 개인적으로 사용하지는 않았지만 "FTP Library .NET"에 대한 검색은 많은 후보자를 찾습니다.
편집 : Jcolebrand (2006 년 블로그 LinkRot 가능성의 경우)
많은 고객이 FTPWebRequest와 함께 CWD 명령을 어떻게 사용할 수 있는지 묻습니다.
답은 명령을 직접 사용할 수는 없지만 URI 매개 변수를 수정하여 동일한 결과를 얻을 수 있습니다.
다음 형식을 사용하고 있다고 가정 해 봅시다.
String uri = "ftp://myFtpUserName:myFtpUserPassword@myFtpUrl";
FtpWebRequest Request = (FtpWebRequest)WebRequest.Create(uri);
Request.Method = "LIST";
위의 예는 사용자 디렉토리로 가져와 모든 내용을 나열합니다. 이제 2 개의 디렉토리를 거꾸로 가서 내용을 나열하고 싶다고 가정 해 봅시다 (사용자가이를 수행 할 권한이있는 경우). 당신은 이전의 ftpwebrequest를 닫고이 URI로 새로운 것을 발행합니다.
uri = "ftp://myFtpUserName:myFtpUserPassword@myFtpUrl/%2E%2E/%2E%2E";
이것은 사용자의 자격 증명에 로그인 한 다음 사용하는 것과 같습니다.
cd ../../
참고 : 사용해 보는 경우
”..”
그들을 탈출하지 않고 직접 URI 클래스는 그들을 제거 할 것입니다."ftp://myFtpUserName:myFtpUserPassword@myFtpUrl/../.."
동일합니다"ftp://myFtpUserName:myFtpUserPassword@myFtpUrl/"
이제 루트 위의 한 레벨 인 다른 사용자 디렉토리로 가고 싶다고 가정 해 봅시다. 사용자 이름과 비밀번호를 지정하지 않으면 익명 사용자로 로그인하는 것과 같습니다. 그런 다음 새로운 것을 발행합니다
FtpWebRequest
다음 URI와 함께
"ftp://myFtpUrl/%2F/anotherUserDir"
이것은 익명으로 로그인 한 다음
Cd /
cd anotherUserDirectory
다른 팁
현재 연결을 닫아야합니다.
request.Close();
다른 URI와 함께 새로운 것을 열어보세요 :
uri = "ftp://example.com/%2F/directory" //Go to a forward directory (cd directory)
uri = "ftp://example.com/%2E%2E" //Go to the previously directory (cd ../)
FtpWebRequest request = (FtpWebRequest)WebRequest.Create(uri);
ftpwebrequest의 ListDirectory 메소드를 사용하는 대신 ftpwebrequest의 ListDirectoryDetails 메소드를 사용할 수 있습니다.
그로부터 당신은 정규 표현식을 사용하여 원하는 가치를 얻을 수 있습니다. 그게 다야, 내 경우에는 나에게 잘 작동한다.