javascript - 如何将 CURL -F @filename 转换为nodejs

标签 javascript node.js curl veracode node-fetch

我必须在nodejs javascript 中翻译一个工作的curl 请求。我之前的类似查询确实成功了,但没有暗示文件传输。

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 中的边界。现在标题看起来像这样:

{ Authorization: 'Basic anVsaWVuLmZleWV1eEAzZHMuY29tOjVZQzA1RlVlTmpBNWdGZF5EMVRYMEQyJFNrTEdNTA==',
  'content-type': 'multipart/form-data; boundary=--------------------------439864217372737605994368' }

还是不行

最佳答案

分辨率:

问题是一个小的 js 错误,因为 node-fetch 需要 header,而我提供了 header

但是,由于缺乏 Node “网络”调试工具,这很难看到。

我使用另一台服务器检查最终的请求 header 并了解出了什么问题。

再次感谢@CBroe 提供有关如何解决此类问题的方法提示。

关于javascript - 如何将 CURL -F @filename 转换为nodejs,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48278902/

相关文章:

javascript - 当我发布到 github 中的自定义域时,React Router 不呈现路径 ='/'

node.js - 如何使用nodejs 将 svg Node 保存到文件中?

php - cURL PHP API 调用不起作用

php - 用于在 PHP 中跟踪货件的 USPS API

windows - CURL 中是否有 WGET -N 的等效函数?

javascript - 如何在 Dojo Toolkit 中为带有按钮的工具栏定义 Widget 类?

javascript - 使用 Node.js 和浏览器进行 HTTP POST 原始二进制数据,无需使用表单数据

javascript - Scrapy:POST 请求返回 JSON 响应(200 OK)但数据不完整

javascript - Joi 验证显示自定义错误消息

javascript - 如何在 async/await 中的另一个 promise 中编写一个 promise