gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 16:53:01 25 4
gpt4 key购买 nike

我在项目中使用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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com