Как перевести CURL -F @filename в nodejs

Я должен перевести рабочий запрос curl в nodejs 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 с другими запросами.

ОБНОВИТЬ

Как и предполагалось, я изменил свой код, чтобы установить границы в заголовке. Теперь заголовок выглядит так:

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

Это все еще не работает

1 ответ

Решение

Разрешение:

Проблема заключалась в небольшой ошибке js, так как выборка узла ожидала заголовки, когда вместо этого я предоставил заголовок.

Однако это было трудно увидеть из-за отсутствия инструмента отладки узла "Сеть".

Я использовал другой сервер, чтобы проверить заголовки окончательного запроса и понять, что пошло не так.

Еще раз спасибо @CBroe за предоставление методических советов о том, как решить такие проблемы.

Другие вопросы по тегам