我试图在JS中发送带有multipart / mixed内容类型的请求。这是我正在使用的cURL命令,它可以工作:
curl -k -i -X POST -H "Content-Type: multipart/mixed" -H "Timestamp: 2017-
04-20'T'13:15:05" -H "AuthToken: A834F35B21E7BE50067B3E352BED" -F
"config=@request.json;type=application/json" -F "logo=@random2.gif"
https://pmdev.****.com:8443/core/admin/hospital/26/department/63
以下是我尝试在JS中使用的代码,但它不起作用:
let blob = new Blob([ JSON.stringify(config) ], {type:
'application/json'})
var formData = new FormData()
formData.append('config', blob)
formData.append('logo', logo)
var request = new XMLHttpRequest()
request.open(method, url)
request.setRequestHeader('Content-type', 'multipart/mixed')
request.setRequestHeader('AuthToken', authToken)
request.setRequestHeader('Timestamp', getTimestamp())
request.send(formData)
如何修复此代码?
答案 0 :(得分:0)
let blob = new Blob([JSON.stringify(config)], {type: 'application/json'});
let formData = new FormData();
formData.append('config',blob);
formData.append('logo',logo);
let request = new XMLHttpRequest();
request.open('POST',url);
request.setRequestHeader('content-type', 'application/json');
request.send(formData);
//我认为您错误地引用了表单数据的内容,我删除了//引用它们。你应该使用'POST'作为你的方法,因为它会自动设置//你的formData(非常肯定,它似乎是一个很远的//断言)。另外,我改变了所有类型为json。
//这个页面上有所有的formData方法:这样你就可以获得附在POST上的//信息 https://developer.mozilla.org/en-US/docs/Web/API/FormData
答案 1 :(得分:0)
最后我设法通过使用axios来解决这个问题, 这是我用过的代码
let formData = new FormData()
let blob = new Blob([ JSON.stringify(config) ], {type: 'application/json'})
formData.append('config', blob)
formData.append('logo', logo)
axios.post(url, formData, {
headers: {
'AuthToken' : authToken,
'Timestamp' : getTimestamp(),
'Content-type': 'multipart/mixed'
}
})