【问题标题】:Upload binary files using jquery and Spring MVC使用 jquery 和 Spring MVC 上传二进制文件
【发布时间】:2014-10-25 02:08:05
【问题描述】:

我正在尝试使用 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 "";
}

我做错了什么吗?

【问题讨论】:

    标签: jquery spring spring-mvc


    【解决方案1】:

    终于找到了问题所在。我的代码很好(您可以将它用作超简单文件上传测试的示例......),但是应用程序中有一个 XSS 过滤器,它将编码更改为 UTF-8。为多部分请求删除此过滤器解决了该问题。

    【讨论】:

      猜你喜欢
      • 2015-11-09
      • 2021-09-18
      • 2018-06-11
      • 2012-11-24
      • 1970-01-01
      • 2015-03-29
      • 2010-12-31
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多