node上传文件问题

node 使用multipart/form-data POST上传文件到某个API,如果这个文件没有在本地存储,需要下载到本地然后才能上传吗?还是说从第一个api取下来直接上传给另一个API

例如:

//来源文件地址
const oa_file="http://oa.com/file/a.txt"
//上传地址
const  url="https://qyapi.weixin.qq.com/cgi-bin/media/upload?access_token=ACCESS_TOKEN&type=file"
headers= {
            "Authorization": "Basic " + "auth",
            "Content-Type": "multipart/form-data"
            }
...
requests.post(url=url,headers=header,files=oa_file)

不需要先下载到本地再上传。你可以直接使用stream或者pipe方法来实现从一个API读取文件内容并上传到另一个API。

const request = require('request');
const fs = require('fs');

const oaFile = "http://oa.com/file/a.txt";
const url = "https://qyapi.weixin.qq.com/cgi-bin/media/upload?access_token=ACCESS_TOKEN&type=file";
const headers = {
  "Authorization": "Basic " + "auth",
  "Content-Type": "multipart/form-data"
};

const formData = {
  media: {
    value: request(oaFile),
    options: {
      filename: 'a.txt',
      contentType: 'text/plain'
    }
  }
};

request.post({ url, headers, formData }, (err, httpResponse, body) => {
  if (err) {
    console.error(err);
  } else {
    console.log(body);
  }
});