Estoy intentando cargar un archivo usando el ejemplo de nodo proporcionado en los documentos de HubSpot .
Recibo 415(Unsupported media type) . La respuesta dice que estoy enviando el encabezado application/json aunque estoy configurando multipart/form-data .
const uploadFile = async () => { const postUrl = `https://api.hubapi.com/filemanager/api/v3/files/upload?hapikey=${HAPI_KEY}`; const filename = `${APP_ROOT}/src/Files/Deal/4iG_-_CSM_Additional_Capacity/test.txt`; const headers = { 'Content-Type': 'multipart/form-data' } var fileOptions = { access: 'PUBLIC_INDEXABLE', overwrite: false, duplicateValidationStrategy: 'NONE', duplicateValidationScope: 'ENTIRE_PORTAL' }; var formData = { file: fs.createReadStream(filename), options: JSON.stringify(fileOptions), folderPath: '/Root' }; try { const resp = await axios.post(postUrl, formData, headers); // API request console.log(resp.data) } catch (error) { console.log("Error: ", error); } }¿Puede ver cuál es el problema o recomendar una mejor manera de cargar el archivo?
¡Gracias!
El ejemplo de Nodo al que se vincula utiliza el módulo de request (obsoleto), no Axios.
Para usar Axios ( fuente ), lo reescribiría como:
const FormData = require('form-data'); const form = new FormData(); form.append('file', fs.createReadStream(filename)); form.append('options', JSON.stringify(fileOptions)); form.append('folderPath', '/Root'); const config = { headers: form.getHeaders() }; axios.post(postUrl, form, config);Podemos ejecutar API en Postman y verificar NodeJs - Axios Detail en Postman Code Snippet y creo que esa es la mejor manera de hacerlo.
const axios = require('axios'); const FormData = require('form-data'); const fs = require('fs'); const uploadFile = async () => { try { let data = new FormData(); data.append('folderPath', '/Root'); form.append('file', fs.createReadStream(`${APP_ROOT}/src/Files/Deal/4iG_-_CSM_Additional_Capacity/test.txt`)); data.append('options', JSON.stringify({ access: 'PUBLIC_INDEXABLE', overwrite: false, duplicateValidationStrategy: 'NONE', duplicateValidationScope: 'ENTIRE_PORTAL' })); var config = { method: 'post', url: `https://api.hubapi.com/filemanager/api/v3/files/upload?hapikey=${HAPI_KEY}`, headers: { 'Content-Type': 'multipart/form-data' }, data: data }; const resp = await axios(config); // API request console.log(resp.data) } catch (error) { // error } }