jakartaftpwrapper를 사용하여 JPG 업로드 JPG 업로드 - 파일을 읽을 수 없게 만듭니다.
문제
jakartaftpwrapper를 사용하여 클라이언트 Java 응용 프로그램에서 서버에 파일을 업로드했습니다 (백업 목적으로).
업로드 된 파일은 텍스트 파일, PNG 파일 및 JPG입니다.
로컬 컴퓨터에서 유효한 JPG 파일은 서버에서 (FTPD에서) 서버에서 읽을 수없는 (부패한 파일)가된다는 것을 알았습니다. 이미지 파일 크기는 원래 파일 크기와 비슷하지만 어떻게 든 결함이 있습니다.
다음은 JPG를 로컬 디스크에 작성하는 데 사용하는 코드입니다.
public static void writeJpeg(BufferedImage bfImg, String fileName, float quality) throws IOException{
FileImageOutputStream output = null;
try{
Iterator iter = ImageIO.getImageWritersByFormatName("jpeg");
ImageWriter writer = (ImageWriter)iter.next();
ImageWriteParam iwp = writer.getDefaultWriteParam();
iwp.setCompressionMode(ImageWriteParam.MODE_EXPLICIT);
iwp.setCompressionQuality(quality); // an integer between 0 and 1
File file = new File(fileName);
output = new FileImageOutputStream(file);
writer.setOutput(output);
IIOImage image = new IIOImage(bfImg, null, null);
writer.write(null, image, iwp);
}
finally{
if (output != null){
output.close();
}
}
FTP 코드는 간단합니다.
JakartaFtpWrapper ftpClient = new JakartaFtpWrapper();
ftpClient.connectAndLogin(FTP_URL, FTP_USER, FTP_PASSWORD);
ftpClient.setPassiveMode(true);
File[] imageFiles = folder.listFiles()
for (int j=0; j<imageFiles.length; j++){
File imageFile = imageFiles[j];
if (imageFile != null && imageFile.isFile() && (FileUtils.getFileSuffix(imageFile).equals("jpg") || FileUtils.getFileSuffix(imageFile).equals("png"))){ // upload only image files
ftpClient.uploadFile(imageFile.getAbsolutePath(), imageFile.getName());
}
}
고마워요
해결책
서버에서 실행되는 것은 무엇입니까? "Out Out Box"FTP 서버입니까 아니면 작성한 것입니까?
이미지는 이진 데이터입니다. jakartaftpwrapper가 FTP 전송을 이진 모드에 넣을 수있는 옵션을 제공하는 경우 그렇게해야합니다. 문제의 가장 큰 원인은 텍스트 모드에서 전송을 처리하려는 불이행 시도라고 생각합니다. 작은 이미지를 Bytewise 비교하면 캐리지 리턴이 표시됩니다 ((char) 0x0d
== (char) 13) 옆에 추가되거나 제거됩니다. 0x0a
'에스. 그렇다면 그것은 당신의 문제입니다.
제휴하지 않습니다 StackOverflow