org.apache.commons.imaging.ImageReadException: 无法读取幻数来猜测格式
org.apache.commons.imaging.ImageReadException: Couldn't read magic numbers to guess format
我正在尝试通过 jsp 上传图像,并在后端尝试读取其元数据。但是我收到这个错误
org.apache.commons.imaging.ImageReadException: Couldn't read magic numbers to guess format.
final ImageMetadata metadata = Imaging.getMetadata(file.getBytes());
问题是目标文件是 MultipartFile 而不是它,它应该是 File 类型。
好吧,假设错误来自 here(如果没有完整的堆栈跟踪很难说),
int i1 = is.read();
int i2 = is.read();
if ((i1 < 0) || (i2 < 0))
throw new ImageReadException(
"Couldn't read magic numbers to guess format.");
我假设上传的图片不知何故损坏了,或者文件有误。我建议只从文件系统读取文件,检查前两个字节,然后从那里移动。
我使用以下代码在文件中转换了 Multipartfile 以避免错误。
File convFile = new File( multipart.getOriginalFilename());
multipart.transferTo(convFile);
final ImageMetadata metadata = Imaging.getMetadata(convFile);
我通过要求它读取一个空流得到了这个错误,所以如果 file.getBytes() 是空的,这也可能发生。
我正在尝试通过 jsp 上传图像,并在后端尝试读取其元数据。但是我收到这个错误
org.apache.commons.imaging.ImageReadException: Couldn't read magic numbers to guess format.
final ImageMetadata metadata = Imaging.getMetadata(file.getBytes());
问题是目标文件是 MultipartFile 而不是它,它应该是 File 类型。
好吧,假设错误来自 here(如果没有完整的堆栈跟踪很难说),
int i1 = is.read();
int i2 = is.read();
if ((i1 < 0) || (i2 < 0))
throw new ImageReadException(
"Couldn't read magic numbers to guess format.");
我假设上传的图片不知何故损坏了,或者文件有误。我建议只从文件系统读取文件,检查前两个字节,然后从那里移动。
我使用以下代码在文件中转换了 Multipartfile 以避免错误。
File convFile = new File( multipart.getOriginalFilename());
multipart.transferTo(convFile);
final ImageMetadata metadata = Imaging.getMetadata(convFile);
我通过要求它读取一个空流得到了这个错误,所以如果 file.getBytes() 是空的,这也可能发生。