【发布时间】:2017-11-23 02:05:07
【问题描述】:
我正在尝试上传 XLSX 文件,但文件到达服务器后会损坏
好文件 „N�c�A�wo]6�9)} "r��F1����6��a8�E�p�,��i����9J��~�6ʒ�2���y�b���ɵz`���E�� 没关系。
错误文件(上传后) „N�c�A�wo]6�9)} "r��F1����6��a8�E�p�,�i����9J��~�6ʒ�2���y�b���ɵz`���E�ne�
客户端JS上传这个文件
var formData = new FormData();
formData.append('file',$('input[type=file]')[0].files[0]);
$.ajax({ url: 'upload',
data: formData,
type: 'POST',
enctype: "multipart/form-data",
processData: false
});
在服务器端使用 apache CXF
@POST
@Path("/upload")
@Consumes(MediaType.MULTIPART_FORM_DATA)
public void upload (@Multipart("file") Attachment attachment){
InputStream inputStream = attachment.getDataHandler().getInputStream();
File targetFile = new File("D://test.xlsx");
OutputStream outStream = new FileOutputStream(targetFile);
int read = 0;
byte[] bytes = new byte[1024];
while ((read = inputStream.read(bytes)) != -1)
{
outStream.write(bytes, 0, read);
}
outStream.close();
}
【问题讨论】:
-
由于您显示的服务器数据文件的格式非常糟糕,很难分辨。但它看起来像一个编码问题。您的服务器端 java 代码不管理编码。 'D:' 可能与 Windows 和默认编码 Windows-1252 有关。这可能与您浏览器的 UT8 编码相差甚远。
-
为了让 IE 工作,客户端代码应该将 contentType 设置为 false
标签: javascript java spring-mvc cxf multipartform-data