javascript - 对已上传的图像文件进行 Request.post

标签 javascript node.js angularjs express

我在项目中使用Angularjs和nodejs并进行文件上传。我想以安全的方式将 post 请求发送到 url 端点,因为我需要在请求中附加 accesstoken。所以我这样做的方法是,我添加了从 UI 中选择文件的指令,一旦获取文件,我就在 Controller 中使用 FormData() 附加它,如下所示

var fd = new FormData();
fd.append('file',myFile);

并将此 formdata 对象发送到 Nodejs 服务器,如此处所述 http://uncorkedstudios.com/blog/multipartformdata-file-upload-with-angularjs

预计此请求将从那里发送到我的 NodeJS 服务器 URL,我将向外部 Web 服务发出另一个发布请求

$http.post('api/collections/upload',fd, {
      transformRequest: angular.identity,
      headers: {
        'Content-type': undefined
     }
});

因此它将在请求中附加正确的内容类型和边界。当我这样做时,我在服务器端 Nodejs 上获取文件

function(req,res){
  console.log(req.files); //I am able to see the file content
}

是在nodejs服务器端上传的。 现在我想使用 req.files 以及正确的 accessToken 和 header 向不同的端点发出发布请求。尝试了很多方法但无法使请求通过。不确定如何将 imagedata/req.files 与请求一起附加。我尝试了 request npm module https://www.npmjs.org/package/request 中提到的这两件事

1)

request.post({
    url: 'https://www.example.com/uploadImage',
    headers: {
      'Authorization': <accessToken>,
      'Content-type': 'multipart/form-data'
    },
    body: req.files
 });

不知道如何通过此请求附加二进制数据以及如何放置边界。当您想通过此请求发送上传的图像时,是否需要边界?

2)

fs.createReadStream(req.files.file.path, {encoding: base64}).pipe(request.post({
    url: 'https://www.example.com/uploadImage',
    headers: {
     'Content-type': 'multipart/form-data'
    }
  })); 

有人可以建议我如何使用 request npm 模块发送此帖子请求吗?谢谢。

最佳答案

这里的文档有很多完全按照您所描述的操作的示例:

https://github.com/mikeal/request#streaming

从该链接中可以看出,request 库向您的 http 的 req 对象添加了一个 .pipe() 方法,您可以使用该方法应该能够像链接中的示例一样使用:

function(req, res) {
  req.pipe(request.post('https://www.example.com/uploadImage');
}

或者类似的东西。

您的第 2 次尝试已经接近成功,但这只有在您之前已将文件写入磁盘并使用 fs.createReadStream() 读入时才有效

关于javascript - 对已上传的图像文件进行 Request.post,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26414447/

相关文章:

javascript - jQuery Animate - 边框宽度和颜色

javascript - jquery 一次切换一个 div

javascript - 图表在 # 个链接期间消失

angularjs - 集成 Fabricjs 和 Angularjs

javascript - NG-INIT 无法正常工作

javascript - 如何动态更改单元格格式

javascript - Expressjs pm2忽略观看公共(public)/图像文件夹

javascript - Dart Nodejs 和 Socketio

node.js - 如何在 MongoDB 的数组字段中投影特定元素?

node.js - 如何使用 PM2 API 查看进程的 PM2 日志