Estoy tratando de cargar un archivo a una API usando multipart/form-data.
Puedo hacer esto con éxito usando el insomnio de la siguiente manera:
Los encabezados se configuran en Content-Type multipart/form-data y también se configura la autenticación básica.
Cuando intento replicar esto en mi código, recibo un error 400.
Esto es lo que tengo en este momento:
const URL = 'https://api.app.uploadplace.com/v1/'; const token = 'randomkey'; async function readFile(path: string) { return new Promise((resolve, reject) => { fs.readFile(path, 'utf-8', function (err, data) { if (err) { reject(err); } resolve(data); }); }); } export const Upload = async (path: string) => { const FormData = require('form-data'); const form = new FormData(); let file = await readFile(path); form.append('file', file); const config = { headers: { 'content-type': 'multipart/form-data' }, auth: { username: token, password: '' } } await axios.post(URL, form, config).then(() => { console.log('success') }).catch(err => { console.log(err); }) };El problema es que está agregando el contenido del archivo como una cadena a los datos de su formulario.
En su lugar, agregue la secuencia legible del archivo...
form.append("file", fs.createReadStream(path)); const config = { headers: form.getHeaders() // this includes correct mime boundary tokens auth: { username: token, password: '' } }