CommonsMultipartResolver

CommonsMultipartResolver

我正试图保存一个上传的二进制文件,该文件带有一个以multipart/mixed格式发送到控制器的http请求,但是当我使用@RequestPart ByteArrayResource将字节数组保存到磁盘时,字节与原始文件中的字节不同。
由于对应于ascii字符的字节是相同的,而不同的字节是具有更高值的字节,所以我认为这是字符编码的问题,但是

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

因为FileOutputStream.write并不能解决这个问题。
请求部分也有CommonsMultipartResolver,但看起来commons的多部分解析器注入的Content-Transfer-Encoding: binary字节与客户端发送的字节不完全相同。
我错过了什么?

最佳答案

最后,我通过手动解析请求部分解决了这个问题:

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
    }
}

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

关于spring - CommonsMultipartResolver搞乱了二进制编码,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16982251/

10-10 14:01