慕容3067478
2021-08-26 14:36:56
在以下代碼段中,我使用node-fetch和form-data首先從遠程 URL 檢索圖像文件,然后將其上傳到 S3 存儲桶(在不同的腳本中使用aws-sdk和multer):import fetch from 'node-fetch';import fs from 'fs';import FormData from 'form-data';const form = new FormData();const processProfileImg = (imageURL, userID) => { fetch(imageURL, userID) .then((response) => { const dest = fs.createWriteStream(`./temp/${userID}.jpg`); response.body.pipe(dest); }) .then((dest) => { form.append('profileImage', fs.createReadStream(`./temp/${userID}.jpg`)); fetch(`https://www.schandillia.com/upload/profile-image?userID=${userID}`, { method: 'POST', body: form }) .then(response => response.json()) .then(json => console.log(json)); });};export default processProfileImg;問題是,這涉及一個中間步驟,即首先在檢索時將文件存儲在本地,然后再由form-data函數(shù)將其拾取以進行 POST 。有沒有辦法完全繞過這一步?我不想將文件保存在本地,我只想從遠程 URL 中提取它并將其 POST 到上傳路由,而無需創(chuàng)建本地文件。
2 回答

慕尼黑的夜晚無繁華
TA貢獻1864條經(jīng)驗 獲得超6個贊
這對我有用:
const axios = require('axios')
const FormData = require('form-data');
//Get image
let imageResponse = await axios({
url: imageUrl,
method: 'GET',
responseType: 'arraybuffer'
})
//Create form data
const form = new FormData()
form.append('image', imageResponse.data, {
contentType: 'image/jpeg',
name: 'image',
filename: 'imageFileName.jpg'
})
//Submit form
let result = await axios({
url: serverUrl,
method: "POST",
data: form,
headers: { "Content-Type": `multipart/form-data; boundary=${form._boundary}` }
})
添加回答
舉報
0/150
提交
取消