Este es el proceso de lectura del archivo. El filePath es una ruta de archivo JPG específica (como /xxx.jpg).
const fileStream = fs.createReadStream(filePath);Luego empiezo a enviarlo a una API.
async function upload(fileData) { const formData = new FormData(); const fileArr = []; fileArr.push(fileData); formData.append("img", fileArr[0]); const result = ( await axios.post( imgHosting, formData, { headers: { "Content-Type": "multipart/form-data", }, } ) ).data; return result; }Este es mi código API.
app.post('/upload', (req, res) => { try { if (!req.files) { console.log('test'); const data = { code: 404, status: "No file uploaded", link: "undefined" }; res.json(data); } else { console.log('uploading...'); let img = req.files.img; let md5 = crypto.createHash('md5').update(img.name).digest('hex'); let ext = path.extname(img.name); const cryptedName = `${md5}${ext}`; const uploadPath = path.join(__dirname, '../uploads', cryptedName); console.log(uploadPath);//? debug img.mv(uploadPath); const data = { code: 200, status: "upload ok", link: "http://my-server-ip/pic/" + md5 + ext }; res.json(data); } } catch (err) { res.status(500).send(err); } });El remitente Node.js y la API Node.js están en el mismo servidor ECS. No sé si esto causará algún problema. Pero puedo recibir los datos JSON de la siguiente respuesta:
0|chatbot | url is: undefined 2|pic-bed | test 0|chatbot | { code: 404, status: 'No file uploaded', link: 'undefined' } 0|chatbot | No file uploaded Creo que el problema debería ser que los datos que envío a la API no están en formato de archivo, pero no sé cómo enviar el archivo JPG local directamente a express-fileupoad . ¿Tampoco parece admitir la importación de archivos directamente a través de la ruta del archivo?
Esta es la primera vez que hago preguntas en stackoverflow. ¡Por favor, perdónenme si hay algún incumplimiento!