如何将 CURL -F @filename 翻译成 nodejs
How to translate CURL -F @filename to nodejs
我必须在 nodejs 中翻译一个有效的 curl 请求 javascript。我确实成功地完成了之前没有暗示文件传输的类似查询。
curl --compressed -u $username:$password https://analysiscenter.veracode.com/api/5.0/uploadfile.do -F "app_id=1" -F "file=@package.zip"
我当前的非工作代码:
const fetch = require("node-fetch")
const b = new Buffer(myUsername + ":" + myPassword)
const s = b.toString('base64')
let uploadFileForm = new FormData()
uploadFileForm.append('app_id', "1")
uploadFileForm.append('file', fs.createReadStream('package.zip'))
header = {
"Authorization": `Basic ${s}`,
"Content-Type": 'multipart/form-data; boundary=' + form.getBoundary()
}
fetch("https://analysiscenter.veracode.com/api/4.0/uploadfile.do",
{
method: 'POST',
header,
body: uploadFileForm
})
.then(res => {
return res.text()
})
.then(body => {
console.log(body)
})
我使用完全相同的身份验证过程来调用 api 和其他请求。
更新
按照建议,我更改了代码以在 header 中设置边界。现在 header 看起来像这样:
{ Authorization: 'Basic anVsaWVuLmZleWV1eEAzZHMuY29tOjVZQzA1RlVlTmpBNWdGZF5EMVRYMEQyJFNrTEdNTA==',
'content-type': 'multipart/form-data; boundary=--------------------------439864217372737605994368' }
还是不行
分辨率:
问题是一个小的 js 错误,因为 node-fetch 期望 headers 而我却提供了 header .
然而,由于缺少节点 "Network" 调试工具,这很难看到。
我使用另一台服务器检查了最终请求 headers 并了解出了什么问题。
再次感谢@CBroe 提供有关如何解决此类问题的方法提示。
我必须在 nodejs 中翻译一个有效的 curl 请求 javascript。我确实成功地完成了之前没有暗示文件传输的类似查询。
curl --compressed -u $username:$password https://analysiscenter.veracode.com/api/5.0/uploadfile.do -F "app_id=1" -F "file=@package.zip"
我当前的非工作代码:
const fetch = require("node-fetch")
const b = new Buffer(myUsername + ":" + myPassword)
const s = b.toString('base64')
let uploadFileForm = new FormData()
uploadFileForm.append('app_id', "1")
uploadFileForm.append('file', fs.createReadStream('package.zip'))
header = {
"Authorization": `Basic ${s}`,
"Content-Type": 'multipart/form-data; boundary=' + form.getBoundary()
}
fetch("https://analysiscenter.veracode.com/api/4.0/uploadfile.do",
{
method: 'POST',
header,
body: uploadFileForm
})
.then(res => {
return res.text()
})
.then(body => {
console.log(body)
})
我使用完全相同的身份验证过程来调用 api 和其他请求。
更新
按照建议,我更改了代码以在 header 中设置边界。现在 header 看起来像这样:
{ Authorization: 'Basic anVsaWVuLmZleWV1eEAzZHMuY29tOjVZQzA1RlVlTmpBNWdGZF5EMVRYMEQyJFNrTEdNTA==',
'content-type': 'multipart/form-data; boundary=--------------------------439864217372737605994368' }
还是不行
分辨率:
问题是一个小的 js 错误,因为 node-fetch 期望 headers 而我却提供了 header .
然而,由于缺少节点 "Network" 调试工具,这很难看到。
我使用另一台服务器检查了最终请求 headers 并了解出了什么问题。
再次感谢@CBroe 提供有关如何解决此类问题的方法提示。