最近在用java做一个上传图像识别文字的功能,上传图像后报错。
接口返回:
{
"code": 500,
"success": false,
"data": null,
"msg": "javax.imageio.IIOException: Not a JPEG file: starts with 0xff 0xd9"
}
后台报错:
1、看报错字面意思就是需要上传jpg文件,我上传的图片类型是png不符合要求,于是将png后缀改成jpg,重新上传还是报这个错,推测要么是png直接改后缀不行,必须图片另存为jpg格式,试了还是报错
查了下也有可能是文件损坏,于是我看了下我的代码是把上传的图片复制了份临时文件,访问的是临时文件,于是断点找到临时文件路径,发现果然是文件损坏,图片大小0kb,修改代码后问题解决
文件损坏
原问题代码:
File tfile = File.createTempFile("tempfile", file.getOriginalFilename());
ocrResult = instance.doOCR(tfile);
修改后的代码:
File tfile = File.createTempFile("tempfile", file.getOriginalFilename());
file.transferTo(tfile);
ocrResult = instance.doOCR(tfile);