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中得到损坏的数据。