如何保证在java中通过InputStream将byte[]保存为jpg图片?

How to ensure that byte[ ] is saved as a jpg image through an InputStream in java?

我正在尝试使用 Apache Commons FTPClient.storeFile(...) 方法将图像保存到 FTPServer,这需要 InputStream。图片以 Byte[] 开头。

这里是一些代码:

InputStream is = new ByteArrayInputStream(byteArray);
boolean  done = ftpClient.storeFile(remotePath, is);

但是,当我下载上传的图片时,它看起来很奇怪,即使尺寸符合要求,图片看起来也不应该。 上传后的图片如下所示: Image after uploading 实际上我无法访问原始图像,但我知道它是一张带有蓝色海水的公海图像。 谢谢!

所以,VGR!准确指出,Apache Commons ftpClient有两种工作模式,ASCII和二进制模式。默认情况下使用 ASCII 模式,必须通过

显式强制将数据作为二进制数据处理
    try {            
        ftpClient.setFileType(FTP.BINARY_FILE_TYPE);
    } catch (IOException ex) {
        System.out.println("Error: " + ex.getMessage());
        ex.printStackTrace();
    }