Bou*_*Dev 5 javascript multipartform-data multipart node.js express
我无权访问任何请求对象(Express/NodeJS)。我只有这个响应对象,我想解析并提取它的二进制部分。
编辑-
为了让事情更清楚 -
我有一个端点(不是传统的 Express 应用程序,而是 FaaS) - 称为“/fileUpload”
该端点接受所有类型的请求 - GET、POST、PUT (FaaS)。
当我在表单数据中使用文件发出 POST/PUT 请求时testImage.PNG
,我会收到请求对象中的内容。FaaS 运行时提供 req 对象作为函数处理程序的参数。
现在,当我打印传入 POST 请求的 request.body 时,我得到的内容如上图所示。
如果我尝试将此二进制内容直接上传到 S3,则会导致图像损坏,我认为这是由于多部分响应中存在其他内容,例如 - Content-Disposition
...
我想做的是,解析附加的多部分内容,例如 Content-Type 标头和多部分边界等,以便我只获得图像二进制文件。
要提取二进制内容,我们需要删除/解析它的标头和边界部分。有一个库 - parse-multipart可以很容易地做到这一点。
例子 -
假设请求头包含一个content-type
标头。
var multipart = require('parse-multipart');
// The following section is the express endpoint/ FaaS handler
{
let header = req.headers["content-type"]
let boundary = header.split(" ")[1]
boundary = header.split("=")[1]
let body = event.data;
//console.log("Boundary - "+ boundary)
let parts = multipart.Parse(body, boundary);
for (var i = 0; i < parts.length; i++) {
var part = parts[i];
console.log(part)
var params = {
Bucket: s3bucket,
Key: part.file,
Body: part.data,
ACL: 'public-read',
Metadata: {
'Content-Type': part.type
}
};
//Upload the data to aws
const data = await s3.putObject(params).promise()
}
return parts
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
9232 次 |
最近记录: |