3

我正在尝试保存一个通过 multipart/mixedHTTP 请求上传的二进制文件,该文件作为 到达我的控制器@RequestPart ByteArrayResource,但是当我将字节数组保存到磁盘时FileOutputStream.write,字节与原始文件中的字节不同。

由于ASCII字符对应的字节是相同的,不同的是具有更高值的字节,我认为这是字符编码的问题,但是设置

<property name="defaultEncoding" value="utf-8"/>

因为CommonsMultipartResolver不能解决问题。

请求部分也有Content-Transfer-Encoding: binary,但看起来 Commons 的多部分解析器仍在注入ByteArrayResource与客户端发送的字节不完全相同的字节。

我错过了什么?

4

1 回答 1

0

最后,我通过手动解析请求部分解决了它:

FileItemFactory factory = new DiskFileItemFactory();

ServletFileUpload upload = new ServletFileUpload(factory);

List<FileItem> items = upload.parseRequest(request);            
for(FileItem item : items) {                     
switch(item.getFieldName()) {
       //Do something with each of the single parts
    }
}

不完全是最干净的方式,但至少我让它工作了。

于 2013-06-21T15:09:36.100 回答