Javascript 使用jqueryajax发送多部分/表单数据,包括一个文件和其他json表单数据
我有一个HTTP API,它等待具有以下结构的多路径/表单数据消息:Javascript 使用jqueryajax发送多部分/表单数据,包括一个文件和其他json表单数据,javascript,jquery,ajax,multipartform-data,form-data,Javascript,Jquery,Ajax,Multipartform Data,Form Data,我有一个HTTP API,它等待具有以下结构的多路径/表单数据消息: --boundary Content-Disposition: form-data; name=""Meta"" Content-Type: application/json {""Title"":""title"",""Description"":""description"",""Number"":3} --boundary Content-Disposition: form-data; name=""file""; f
--boundary
Content-Disposition: form-data; name=""Meta""
Content-Type: application/json
{""Title"":""title"",""Description"":""description"",""Number"":3}
--boundary
Content-Disposition: form-data; name=""file""; filename=""fileName""
Content-Type: text/plain
Content-Transfer-Encoding: 7BIT
some text content
--boundary
我试图使信息的结构如下所示:
var data = new FormData();
data.append("Meta", "Content-Type: application/json\r\n\r\n" + [JSON.stringify({ Title: "title", Description: "description", Number: 3})] + "\r\n");
data.append('File', document.getElementById("file").files[0]);
$.ajax({
url: myservice,
data: data,
cache: false,
processData: false,
contentType: false,
type: 'POST',
success: function (data, status, req) {
alert("OK"+req);
},
error: function (req, status, error) {
alert("ERROR"+req);
}
});
但是,我无法将内容类型添加到非文件部分
使用这种方法,我在内容配置和内容类型之间创建了一条带有剩余换行符的消息
-----------------------------10743159127866
Content-Disposition: form-data; name="Meta"
Content-Type: application/json
{"Title":"title","Description":"description","Number":3}
-----------------------------10743159127866
Content-Disposition: form-data; name="File"; filename="b839f0cc60ac4fb68f826b20cd02873b.pdf"
...
$(文档).ready(函数(){
$(“#提交”)。单击(函数(){
var fileInput=document.getElementById('image');
var file=fileInput.files[0];
var formData=new formData();
formData.append('file',file);
$.ajax({
url:“url.php”,
类型:“POST”,
数据:“文件=”+文件,
cache:false,
成功:功能(res){
警报(res);
},
错误:函数(err){
警惕(err);
}
});
});
});
您是否检查了引号(“)?引号可能会破坏您的代码
<script type="text/javascript">
$(document).ready(function() {
$("#submit").click(function() {
var fileInput = document.getElementById('image');
var file = fileInput.files[0];
var formData = new FormData();
formData.append('file', file);
$.ajax({
url: "url.php",
type: "POST",
data: "file="+file,
cache: false,
success: function(res) {
alert(res);
},
error: function(err){
alert(err);
}
});
});
});
</script>