[英]How can I upload a file from an HTTP response body to S3 using putObject() from the AWS SDK (in Node.js)?
[英]How can I send file from a remote AWS S3 to Other Server Using AXIOS in NODE JS
您好,我正在實現一個 API 端點,我可以在其中發送來自 aws S3 的文件。 我所做的是從我的 s3 存儲桶中獲取文件
let file_data = await S3.getObject(params).promise();
let buf = Buffer.from(file_data.Body);
const file = buf.toString("base64");
現在我想將文件發送到其他 API 以進行驗證。 我試過這樣的事情,但似乎不起作用
var data = new FormData();
const data_file = fs.createReadStream(fs.createWriteStream(file));
data.append("document", data_file);
var config = {
method: "post",
url: `${process.env.URL}/verify_file`,
headers: {
"Content-Type": "application/x-www-form-urlencoded",
Authorization: `Bearer ${token}`,
...data.getHeaders(),
},
data: data,
};
try {
const res = await axios(config);
console.log(res.data);
} catch (error) {
console.error("sendPassport", error);
}
我找到了我的解決方案。 我從從 AWS S3 獲得的緩沖區創建了一個文件。 然后將其保存在我當前的工作目錄中。
let file_data = await S3.getObject(params).promise();
const buffer = Buffer.from(file_data.Body, "utf8");
// Create and download a file
fs.writeFileSync(
`${process.cwd()}/public/tmp/${data.filename}`,
buffer
);
然后我使用fs.createReadStream()
函數將文件轉換為流,然后發送發送文件
var data = new FormData();
const data_file = fs.createReadStream(`${process.cwd()}/public/tmp/${data.filename}`);
data.append("document", data_file);
var config = {
method: "post",
url: `${process.env.URL}/verify_file`,
headers: {
"Content-Type": "application/x-www-form-urlencoded",
Authorization: `Bearer ${token}`,
...data.getHeaders(),
},
data: data,
};
try {
const res = await axios(config);
console.log(res.data);
} catch (error) {
console.error("sendPassport", error);
}
// Delete the file
fs.unlinkSync(file_path);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.