在javascript / jquery中构建multipart / form-data请求

时间:2015-03-13 18:16:14

标签: javascript jquery ajax

我一直在做一些搜索并试图弄清楚如何构建通过

之类的内容发送请求
   $.ajax({
            contentType: "multipart/form-data",
            type: "POST",
            data: data,
            url: url,
            success: function (data) { }
        });

现在请求本身应该看起来像这样的json作业部分,然后是json细节部分和相关文件

Content-Type: multipart/form-data; boundary=4fed9b4a-7aae-430f-b907-cbefe7e22c55
--4fed9b4a-7aae-430f-b907-cbefe7e22c55
Content-Type: application/vnd.collection+json
Content-Disposition: form-data; name=job

{json}

--4fed9b4a-7aae-430f-b907-cbefe7e22c55
Content-Type: application/vnd.collection+json
Content-Disposition: form-data; name=details

{json}

--4fed9b4a-7aae-430f-b907-cbefe7e22c55
Content-Type: application/pdf
Content-Disposition: form-data; filename=moo.pdf

xxxxxxxxxxxxxxxxx
--4fed9b4a-7aae-430f-b907-cbefe7e22c55
Content-Type: application/vnd.collection+json
Content-Disposition: form-data; name=details

{json}

--4fed9b4a-7aae-430f-b907-cbefe7e22c55
Content-Type: application/pdf
Content-Disposition: form-data; filename=doh.pdf

xxxxxxxxxxxxxxxxxxxxxxxxxxx
--4fed9b4a-7aae-430f-b907-cbefe7e22c55--

所以使用Javscript并假设我有文件数据和json数据我将如何构建一个我可以在上面的ajax调用中发送的请求?感谢

1 个答案:

答案 0 :(得分:0)

尝试将contentType: falseprocessData: false添加到您的ajax请求中。 this SE问题的答案包括对正在发生的事情的一个很好的解释,基本上你强迫jQuery不包含内容类型标题。