Я пытаюсь преобразовать следующий синтаксис curl в node.js, используя axios:
curl -X POST "https://my-target-baseURL.com/elements/api/files?
path=%2Fmy-file&folderId=1234"
-H "accept: application/json"
-H "Authorization: SomeHeader 1234, OtherHeader 1234"
-H "content-type: multipart/form-data"
-F "file=@my-file.png;type=image/png"
Чтобы конвертировать это, я делаю следующее.
const fileInfo = path.parse(req.file.filename)
const fileFullName = fileInfo.name + fileInfo.ext
const folder_id = req.query.id
const readFile = util.promisify(fs.readFile)
const fullPath = path.join(__dirname, '..', 'someDirectory', fileFullName)
const file_to_upload = await readFile(`${fullPath}`)
try {
const uploaded_file = await axios.post(`${my-target-baseURL.com}/elements/api/files?path=%2F${fileFullName}&folderId=${folder_id}`,
file_to_upload,
{ headers: { 'accept': 'application/json', Authorization: `SomeHeader xyz, OtherHeader xyz`,
'content-type':'multipart/form-data',},
})
console.log('uploaded_file: ', uploaded_file.data)
}
catch(error) {
throw new Error(error)
}
После этого я получаю ошибку 500 (Unhandled promise rejection (rejection id: 2): Error: Error: Request failed with status code 500
).
Одна небольшая вещь, которую стоит упомянуть, это то, что способ, которым я читаю файл, работает нормально. Причина, по которой я это говорю, заключается в том, что этот фрагмент кода используется для чтения файла точно так же, как это, и запускает другой API и получает ответ без каких-либо проблем.
Я не могу найти причину этой проблемы. Что-то не так с тем, как я конвертирую curl в вызов axios? Я правильно делаю преобразование для -F "file=@my-file.png;type=image/png"
?