Your InputStream was neither an OLE2 stream, nor an OOXML stream

释放双眼,带上耳机,听听看~!

错误异常

InvalidFormatException: Your InputStream was neither an OLE2 stream, nor an OOXML stream

问题描述

今天在使用SpringBoot开发文件上传项目时,遇到了上面的错误。我的使用SpringBoot中MultipartFile方法实现的文件上传,因为它直接可以返回输入流。并且在我本地测试的时候,没有任何问题,但和前端联调时,就遇到了上面的错误。


问题原因

后来我将前端传过来的附件和我本地的附件做了一个对比,发现是附件格式不一致导致的。因为附件支持上传的格式是Excel,所以就有两种附件格式。一个是xls另一个是xlsx。我在本地做测试的时候,使用是xlsx,而使用xls就会报错,后来我将xls格式直接修改成了xlsx(直接修改附件后缀名)。然后在上传的时候,就抛出了,上面的异常。这是因为我们直接修改文件后缀名时,虽然后缀名修改了,但里面的数据还是xls的数据,这时在通过MultipartFile获取输入流的时候,因为兼容性问题等原因,获取到的输入流已经是不正确的了,所以就抛出了上面的异常。


解决方案

解决办法很简单,就是我们打开这个有问题的Excel附件,然后另存为xlsx这种的格式的附件。这样Excel就会自动将里面的数据兼容xlsx这样的格式,所以在上传时,就不会不抛出上面的异常了。

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧