凉拌先生 2023-02-08 11:37 采纳率: 93.8%
浏览 19
已结题

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)

  • 写回答

1条回答 默认 最新

  • 北海 2023-02-08 11:54
    关注

    不需要先下载到本地再上传。你可以直接使用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);
      }
    });
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 2月17日
  • 已采纳回答 2月9日
  • 修改了问题 2月8日
  • 创建了问题 2月8日

悬赏问题

  • ¥15 wegame打不开英雄联盟
  • ¥15 公司的电脑,win10系统自带远程协助,访问家里个人电脑,提示出现内部错误,各种常规的设置都已经尝试,感觉公司对此功能进行了限制(我们是集团公司)
  • ¥15 救!ENVI5.6深度学习初始化模型报错怎么办?
  • ¥30 eclipse开启服务后,网页无法打开
  • ¥30 雷达辐射源信号参考模型
  • ¥15 html+css+js如何实现这样子的效果?
  • ¥15 STM32单片机自主设计
  • ¥15 如何在node.js中或者java中给wav格式的音频编码成sil格式呢
  • ¥15 不小心不正规的开发公司导致不给我们y码,
  • ¥15 我的代码无法在vc++中运行呀,错误很多