【发布时间】:2021-06-16 09:21:11
【问题描述】:
我正在使用表单数据和 Axios 将文件从 Firebase 函数上传到另一个 API。但是,当我将createReadStream(filePath) 添加到我的formData 对象并将其附加到我的POST 请求时,响应会给出400 状态代码,声称该文件不存在。我的代码:
const { fileName } = data;
const tempFilePath = path.join(os.tmpdir(), 'image.jpg');
const bucket = admin.storage().bucket();
await bucket.file(fileName).download({destination: tempFilePath});
let formData = new FormData();
formData.append('photo', fs.createReadStream(tempFilePath));
const formHeaders = formData.getHeaders();
await axios.post('api/endpoint', formData, {
headers: {
...formHeaders
}
}).catch(err => {
console.error(err.response.data)
});
我在Post请求后得到的错误状态码为400,如下:
{ error: 'invalid_query_missing_photo', ok: false }
我已验证tempFilePath 确实会生成一个实际文件,并且我能够从 Postman 发出请求。但是,即使是从 Postman 的代码生成功能生成的代码也会导致同样的错误。
我的导入语句:
// The Cloud Functions for Firebase SDK to create Cloud Functions and setup triggers.
const functions = require('firebase-functions');
const axios = require('axios');
// The Firebase Admin SDK to access Firestore.
const admin = require('firebase-admin');
admin.initializeApp();
const path = require('path');
const os = require('os');
const fs = require('fs');
const { firebaseConfig } = require('firebase-functions');
const FormData = require('form-data');
【问题讨论】:
标签: javascript node.js axios