- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在项目中使用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/
我有以下正则表达式 /[a-zA-Z0-9_-]/ 当字符串只包含从 a 到z 大小写、数字、_ 和 -。 我的代码有什么问题? 能否请您向我提供一个简短的解释和有关如何修复它的代码示例? //var
我是一名优秀的程序员,十分优秀!