2011-10-12 3 views
3

우리는 독점 FTP 클라이언트를 실행하는 장치를 가지고 있습니다. 그들은 파이썬 기반 FTP 서버를 사용하여 우리의 웹 서비스에서 XML 파일뿐만 아니라 미디어 파일 (AVI 비디오 및 이미지)을 검색합니다. 문제는 FTP 클라이언트가 바이너리 모드가 아닌 ASCII 모드로 미디어 파일을 다운로드하려고한다는 것입니다. 파이썬 FTP 서버 (pyftpdlib)를 계속 사용하고 싶지만 클라이언트가 바이너리 모드를 사용하도록 강제 할 수있는 방법을 찾을 수 없습니다.FTP 클라이언트가 서버 측에서 바이너리를 사용하도록 할 수 있습니까?

필자는 FTP RFC를 통해 FTP 서버가 ASCII 대신 바이너리를 사용하도록 명령 할 수있는 명령/응답 시퀀스를 찾아 보았습니다. 그러한 명령/응답 시퀀스가 ​​존재합니까?

+0

아니요 AFAIK 서버 측에 명령 시퀀스가 ​​없습니다 ... 서버 측에서 바이너리 만 전달할 수는 있지만 ASCII가 필요한 경우 클라이언트 측에서 매우 이상한 동작/크래시가 발생할 수 있습니다 ... 유일한 해결책 IMHO는 클라이언트의 행동을 바꾸는 것입니다! – Yahia

답변

2

사용자 지정 FTPHandler을 사용하고 FTPHandler.ftp_TYPE(filetype) 메서드를 재정 의하여 기본 동작을 무시하거나 FTP 서버를 재정 의하여 서버가 이진 모드 self._current_type = "i"의 파일을 제공하도록 할 수 있습니다.

+0

이것은 참으로 나를 위해 일했습니다. 이 코드는 내가 게시 한 답변에 있습니다. – cnowacek

+0

당신의 접근 방식을 사용하지만 Filezilla는 "test"라는 파일에 "TYPE A"를 사용하려고했습니다.이 파일은 zip 아카이브였으며 손상되었습니다. 내 서버는 "있는 그대로"서비스를 제공했지만 클라이언트는 텍스트 모드로 읽습니다. 파일을 "test.dat"로 변경하면 Filezilla는 "TYPE I"을 사용하여 문제를 해결했습니다. 그러나 문제는 서버가 "TYPE I"과 같은 "TYPE A"를 처리하더라도 클라이언트 측은 여전히 ​​파일을 손상시킵니다. – sashoalm

관련 문제