使用 jQuery 通过表单数据上传文件时出错
Error while file upload via form data using jQuery
我在使用 jQuery 通过 Formdata 上传文件时遇到错误。
Error details - Required request body is missing. The input message is not readable.
Error Screenshot
- 为什么边界值不同?
- 为什么服务失败了?我的表单数据有问题吗?请与成功截图对比。
Successful call
var formData = new FormData();
formData.append('object', JSON.stringify({
"properties": {
"object_name": "Test Doc4",
"r_object_type": "eri_wg_doc",
"eri_document_type": "Agenda",
"eri_conf_class": "Ericsson Confidential",
"eri_audience": "Workgroup Members - Restricted",
"ignore-number": false,
"allow-new-version": false
}
}));
formData.append('content', files[0]);
var aData = jQuery.ajax({
type: "POST",
contentType: "multipart/form-data;boundary=----LGZlKL2faC2ilpCJ",
headers: {
"Authorization": "Basic " + btoa("username" + ":" + "password"),
"accept": "application/json"
},
url: "https://domain/repositories/folders/0b004cff89977940/documents?skipSSO=true",
processData: false,
data: formData,
success: function(data, status) {
console.log(data);
}
});
问题的原因是因为你设置了自己的contentType
和边界。通过 jQuery AJAX.
上传文件时,这是不正确的做法
正确的做法是在向 data
属性 提供 FormData
object 时使用 contentType: false
。 jQuery 然后将配置 contentType
header 本身,并保持边界一致。
我在使用 jQuery 通过 Formdata 上传文件时遇到错误。
Error details - Required request body is missing. The input message is not readable.
Error Screenshot
- 为什么边界值不同?
- 为什么服务失败了?我的表单数据有问题吗?请与成功截图对比。
Successful call
var formData = new FormData();
formData.append('object', JSON.stringify({
"properties": {
"object_name": "Test Doc4",
"r_object_type": "eri_wg_doc",
"eri_document_type": "Agenda",
"eri_conf_class": "Ericsson Confidential",
"eri_audience": "Workgroup Members - Restricted",
"ignore-number": false,
"allow-new-version": false
}
}));
formData.append('content', files[0]);
var aData = jQuery.ajax({
type: "POST",
contentType: "multipart/form-data;boundary=----LGZlKL2faC2ilpCJ",
headers: {
"Authorization": "Basic " + btoa("username" + ":" + "password"),
"accept": "application/json"
},
url: "https://domain/repositories/folders/0b004cff89977940/documents?skipSSO=true",
processData: false,
data: formData,
success: function(data, status) {
console.log(data);
}
});
问题的原因是因为你设置了自己的contentType
和边界。通过 jQuery AJAX.
正确的做法是在向 data
属性 提供 FormData
object 时使用 contentType: false
。 jQuery 然后将配置 contentType
header 本身,并保持边界一致。