javascript - NodeJS 尝试使用 fs.createfilestream 内部的 URL

标签 javascript node.js

我正在尝试向我的 api 发送发布请求,该 api 运行良好(我可以发布文件,但不能通过网址发布),但现在我尝试通过网址发布。

这是我现在的代码,我删除了一些与问题无关或用于测试的行。

    request({
                url: url + "gettoken"
                , json: true
            }, function (error, response, body) {
                user = body;
                var rs = fs.createReadStream(up.url);
                var ws = request.post(url + "upload?token=" + `${user.token}&key=${user.key}&filename=${filename}`);
                ws.on('drain', function () {
                    rs.resume();
                });
                rs.on('end', function () {
                    console.log(filename);
                });
                ws.on('error', function (err) {
                    console.error('cannot send file ' + err);
                });
                rs.pipe(ws);
            })

谁能帮帮我。

最佳答案

因此,我们的想法是将位于 up.url 的文件上传到位于 url +“upload?...” 的另一台服务器。

由于 fs.createReadStream 旨在读取本地文件,而不是 URL,因此您需要可以从 URL 创建流的东西(或者更确切地说,检索该 URL 并流式传输响应)。

您还可以使用 request 来实现:

request({
  url:  url + "gettoken",
  json: true
}, function (error, response, body) {
  const user = body;
  const rs   = request.get(up.url);
  const ws   = request.post(url + "upload?token=" + `${user.token}&key=${user.key}&filename=${filename}`);

  rs.on('end', function () {
    console.log(filename);
  });
  ws.on('error', function (err) {
    console.error('cannot send file ' + err);
  });

  rs.pipe(ws);
});

通常,文件上传通过 multipart/form-data 进行,但您的代码不建议在此处使用。如果是的话,代码将变成这样:

const ws = request.post(url + "upload?token=" + `${user.token}&key=${user.key}&filename=${filename}`, {
  formData : {
    the_file : rs
  }
});
// no `rs.pipe(ws)`

关于javascript - NodeJS 尝试使用 fs.createfilestream 内部的 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53430170/

相关文章:

node.js - 如何覆盖feathersjs默认服务方法

node.js - 运行 parallelshell Nodejs 脚本时出现问题

javascript - 无法从外部js文件访问 Angular 服务

javascript - 如何应用我的代码以使用 Ctrl+A 来选择全部?

javascript - Chrome 中的 ES6 模块

mysql - 如何将图像上传到mysql数据库并在pug模板引擎中显示来自mysql数据库的图像?

javascript - 在类方法中使用 Puppeteer

javascript - jquery中查找xml字符串节点是否有子元素

javascript - meteor 和javascript : make functions in one file available to another

javascript - Firebase云函数: Error: EISDIR: illegal operation on a directory