NodeJS文件创建为对象?

时间:2016-02-08 21:36:32

标签: node.js file slack-api

我不想在本地保存文件,但我想创建一个文件对象,然后通过API上传。

    var request = require("request");
    var fs = require("fs");

    var arr = [
     [4, 56, 7, 3, 345],
     [34, 5, 2, 5, 7]
       ];

    var r = requests.post("https://slack.com/api/files.upload", function(err, res,body){
       console.log(body)''
     }

     var form = r.form();
     form.append('token', token)
     form.append("filename", filename)
     form.append('file', new Buffer(arr));

我想知道是否有可能不在本地保存文件,只是将包含数据的文件添加到要通过API提交的表单中?

1 个答案:

答案 0 :(得分:0)

是的,您可以直接将文件传输到请求中而不保存值。但是,它取决于数据的来源以及如何访问它。 当您执行fs.createReadStream('<filepath>')时,您创建的ReadStream作为表单数据的一部分传递给request。然后,请求使用此Stream读取文件并将其传递给您刚刚请求的资源。

以下代码将获取服务器可访问的文件,并将其通过请求传递到所需端点。

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

var formData = {
  token: token,
  filename: filename,
  file: fs.createReadStream('<filepath>');
};

request({
  method: 'POST',
  url: 'https://slack.com/api/files.upload',
  form: formData
}, function(err, res, body) {
   console.log(JSON.stringify(body, null, 2));
});
相关问题