Hola, tengo un backend que recibe una solicitud con una imagen y almacenamiento, lo pruebo con cartero y con el código a continuación y funciona perfectamente
var axios = require('axios') var FormData = require('form-data') var fs = require('fs') var data = new FormData() data.append('file', fs.createReadStream('index.png')) console.log('HEADERS') console.log(data.getHeaders()) let config = { method: 'post', url: 'http://localhost:5013/v1/business/honda/widget/test/', headers: { ...data.getHeaders(), }, data: data, }El problema está en mi aplicación vue, trato de hacerlo con el siguiente código, tengo 2 botones, uno carga la imagen y el otro para enviarla. En el back-end, tengo el error de seguimiento cuando trato de elegir 'archivo'
http: no hay tal archivo
let imageData //send the image to backend function funtest() { console.log('image') const formData = new FormData() const url = 'http://localhost:5013/v1/business/honda/widget/test/' formData.append('file', imageData) let config = { method: 'post', url: url, headers: { 'Content-type': 'multipart/form-data', }, data: formData, } axios(config) .then((response) => { console.log('RESPONSE') console.log(response) }) .catch((error) => { console.log('ERROR') console.log(error) }) } //function to read the image function onImage(data) { const reader = new FileReader() reader.onload = (e) => { imageData = e.target.result console.log('imagen') } reader.readAsDataURL(data.target.files[0]) }Creo que probablemente no esté leyendo correctamente la ruta al archivo index.png aquí, fs.createReadStream('index.png')
Considere usar una path como esta
const path = require('path'); const filePath = path.join(__dirname, 'index.png'); data.append('file', fs.createReadStream(filePath))NB: Esta es solo una sugerencia rápida y sucia, y no está garantizado que funcione, pero definitivamente vale la pena intentarlo.