亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

從 URL 獲取圖像并通過 NodeJS 中的 POST 上傳到另一個

從 URL 獲取圖像并通過 NodeJS 中的 POST 上傳到另一個

慕容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函數將其拾取以進行 POST 。有沒有辦法完全繞過這一步?我不想將文件保存在本地,我只想從遠程 URL 中提取它并將其 POST 到上傳路由,而無需創建本地文件。
查看完整描述

2 回答

?
慕尼黑的夜晚無繁華

TA貢獻1864條經驗 獲得超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}` }

})


查看完整回答
反對 回復 2021-08-26
  • 2 回答
  • 0 關注
  • 318 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號