【问题标题】:How to send Multipart data and json object from ajax to spring如何将Multipart数据和json对象从ajax发送到spring
【发布时间】:2015-09-24 11:42:17
【问题描述】:

我已经通过向控制器(Sprig)发送多部分请求来完成从 Angular js 上传(拖放)文件的 poc,但是我需要发送更多参数以及文件(多部分内容)可以任何人建议我将文件(多部分内容)和 json 对象发布到控制器。

【问题讨论】:

  • 您能发布您的实际代码或它的示例吗?所以我们可以玩它。
  • 对不起,为了您的方便,实际上我没有我在服务器站点部分做的客户端源代码

标签: angularjs spring file-upload annotations httprequest


【解决方案1】:

你不能只用一种方法来做这两件事。如果它是一个大对象,我建议创建另一个方法并在文件上传之后或之前调用它。否则例如如果你有 HTML 表单,你可以这样做:

var form = new FormData(document.getElementById('file-upload-form'));
$.ajax({
    url: /file/upload,
    data: form,
    dataType: 'text',
    processData: false,
    contentType: false,
    type: 'POST',
    success: function () {
        //Do something
    },
    error: function (jqXHR) {
        //Do something
    }
});

然后在你的 Spring 控制器中:

@RequestMapping(value = "/file/upload", method = RequestMethod.POST)
@ResponseBody
public ResponseEntity uploadFile(MultipartHttpServletRequest request) {
    Iterator<String> itr = request.getFileNames();
    MultipartFile file;

    try {
        file = request.getFile(itr.next()); //Get the file.
    } catch (NoSuchElementException e) {
    }

    String param = request.getParamterer("paramName"); //Get your parameters

    //Do something else.
}

您必须声明MultipartHttpServletRequest,其中将包含您请求的文件和所有表单数据。

希望这会有所帮助。

【讨论】:

  • 是的,对我有很大帮助
猜你喜欢
  • 2019-03-19
  • 2016-10-25
  • 2019-07-25
  • 2017-07-29
  • 2015-05-03
  • 2021-03-17
  • 2017-02-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多