Java cargue jpg usando JakartaFtpWrapper - hace que el archivo sea ilegible

He estado utilizando JakartaFtpWrapper para cargar archivos desde la aplicación Java del cliente a mi servidor (con fines de copia de seguridad).

Los archivos que se cargan son archivos de texto, archivos png y jpgs.

Me he dado cuenta de que los archivos jpg que son válidos en la máquina local, de alguna manera se vuelven ilegibles (archivos corruptos) en el servidor (donde se encontraban en FTPd). El tamaño del archivo de imagen es similar al original, pero de alguna manera está defectuoso.

Aquí hay un código que estoy usando para escribir el jpg en el disco LOCAL:

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();
    }
}

El código ftp es sencillo:

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());
        }
    }

Gracias ran

Respuestas a la pregunta(1)

Su respuesta a la pregunta