spring4,jboss eap 6.4.0 xlsxfile upload损坏的大小
我在Spring4应用程序中有file upload的问题。
TL;博士
.xlsxfile upload后,我们有比原来更大的文件。 另外,我们不能用Microsoft Office打开它。
问题
我已经检查了每个教程,并以各种方式进行实施。 除了XLSX以外,几乎所有的文件types都可以正常工作。
脚本
我正在使用文件(例如,首先从http://www.sample-videos.com/download-sample-xls.php )
在docker:
$ ls -la | grep .xlsx -rw-r--r--@ 1 user staff 19K 31 mar 13:46 SampleXLSFile_19kb.xlsx
19KB
但上传后,我有:
$ ls -la | grep .xlsx -rw-r--r-- 1 user staff 24K 31 mar 13:47 SampleXLSFile_19kb.xlsx
whaaat!? 24K?
经过debugging,我已经达到了该文件位于Jboss临时目录与新的,更大的大小。
有什么问题?
上传后,我无法在Excel中打开.xslx文件,我无法在应用程序中处理它们。 文件已损坏。
你有什么想法? 正如我所看到的,只有xlsx文件存在问题。
示例上传代码:
@RequestMapping(value = "/api/file", method = RequestMethod.POST) public ResponseEntity upload(@RequestParam("file") MultipartFile file) throws Exception { if (!file.isEmpty()) { try { BufferedOutputStream stream = new BufferedOutputStream( new FileOutputStream(new File(this.uploadDirectory + "/" + file.getOriginalFilename()))); FileCopyUtils.copy(file.getInputStream(), stream); stream.close(); } catch (Exception e) { throw new Exception(e); } } return new ResponseEntity(null, HttpStatus.OK); }
正如你所看到的 – 没有什么特别的。
@UPDATE
看起来只有.xslx文件没有问题。 二进制文件也有问题。
我发现, org/apache/commons/fileupload/MultipartStream.java
正在导致这个问题。 它看起来像从中读取太多的字节,并保存更大的文件。
例如,我上传了43M的压缩文件,但最后我得到了78M上传的压缩文件。
@解决了
事实certificate,这是一些内部的应用程序问题。 我们有一个弹簧filterpipe理当前的请求,提取一些数据logging。 filter运行得相当早,所以上传机制从我们的filter中得到损坏的数据。