2016-08-15 4 views
2

아파치의 commons-net 3.5를 사용하여 원격 FTP 서버에 파일을 업로드하고 연결을 열기 전에 연결 인코딩을 아래와 같이 UTF-8로 설정하고 있습니다.FTP 파일 업로드 - 파일 이름 인코딩 오류

ftpClient.setAutodetectUTF8(true); 
ftpClient.setControlEncoding("UTF-8"); 

그리고이 파일 여기

private void uploadFile(byte[] data, String path, String fileName, FTPClient ftpClient) throws IOException { 
    ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE); 
    ftpClient.setFileTransferMode(FTPClient.BINARY_FILE_TYPE); 
    boolean uploadSuccess = ftpClient.storeUniqueFile(fileName, new ByteArrayInputStream(data)); 

를 전송하는 부분은 문제가; 이름에 터키어 문자가 포함 된 파일을 보낼 때 결과 파일의 이름이 잘못 지정됩니다. 마찬가지로

Kimlikş.pdf -> KimlikÅ.pdf 

ftp4j을 사용하면 모든 것이 정상적으로 작동합니다. 누구든지 전에 이것을 가졌습니까? 데이터가 제 편으로 부적절하게 배송됩니다. Microsoft 네트워크 모니터로 트래픽을 모니터링했습니다. 여기에 원시 요청입니다 : 나는 아파치의 평민 - 그물 버그가 있었다 생각

FTP FTP:Request from Port 62642,'STOR KimlikÅ.pdf' {TCP:5879, IPv4:134} 
+0

특히 원격 시스템에서 적절한 문자 세트를 사용하고 있는지 확인하십시오. 원격 파일 시스템이 win-1252를 사용한다면 UTF-8 파일 이름을 클라이언트로부터 보내는 것이 무의미합니다. –

+0

'ftpClient.setCharset (StandardCharsets.UTF_8); ' –

+0

@ 마크, 나는 서버 측에서도 같은 문자 세트를 사용하고있다. –

답변

0

, 그래서 나는 ftp4j로 마이그레이션하지 않고 문제가 더 이상이었다.

<dependency> 
    <groupId>it.sauronsoftware</groupId> 
    <artifactId>ftp4j</artifactId> 
    <version>1.6</version> 
</dependency>