我正在尝试使用JQuery和Spring将文件上传到Web服务器 Web服务器是Tomcat 这适用于文本文件,但不适用于二进制文件 例如,上传JPG或PDF会生成无法打开的较大文件 我创建了一个非常简单的网页来演示问题:
<!DOCTYPE HTML>
<html>
<head>
<title></title>
<script src="//ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script type="text/javascript">
function upload() {
var post_data = new FormData();
post_data.append( 'file', $('input[type=file]')[0].files[0]);
$.ajax({
type: 'POST',
url: '/rest/api/events/',
cache: false,
data: post_data,
processData: false,
contentType: false
});
}
</script>
<body>
<input type="file" name="file" id="file">
<button id='uploadBtn' onclick='upload();'>Upload</button>
</body>
</html>
控制器:
@RequestMapping(method = RequestMethod.POST, value = "/api/events")
@ResponseStatus(HttpStatus.OK)
public
@ResponseBody
Object addEvent(@RequestParam(value = "file", required = false) MultipartFile file) {
try {
file.transferTo(new File("C:\\" + file.getOriginalFilename()));
} catch (IllegalStateException | IOException e) {
}
return "";
}
我做错了吗?
答案 0 :(得分:0)
终于设法找到了问题。我的代码很好(您可以将其用作超简单文件上传测试的示例...),但是应用程序中有一个XSS过滤器,它将编码更改为UTF-8。删除此过滤器以解决此问题。