Mar*_*ujo 4 multipartform-data serverless-framework
如何使用无服务器框架处理多部分/表单数据?v.0.5.6
刚刚尝试了这个:
"requestTemplates": {
"multipart/form-data": {
"httpMethod": "$context.httpMethod",
"body": "$input.json('$')",
"queryParams": "$input.params().querystring",
"headerParams": "$input.params().header",
"headerParamNames": "$input.params().header.keySet()",
"contentTypeValue": "$input.params().header.get('Content-Type')"
},
"application/json": {
"httpMethod": "$context.httpMethod",
"body": "$input.json('$')",
"queryParams": "$input.params().querystring",
"headerParams": "$input.params().header",
"headerParamNames": "$input.params().header.keySet()",
"contentTypeValue": "$input.params().header.get('Content-Type')"
}
}
Run Code Online (Sandbox Code Playgroud)
action.js:
export function respond(event, cb) {
var form = new formidable.IncomingForm();
form.parse(event, function(err, fields, files) {
if (err == null) {
var response = {
status: "true",
data: fields,
error: []
};
return cb(null, response);
} else {
console.log(err);
return cb(null, ApiErrors.errors(402, err['message'] + fields));
}
});
}
Run Code Online (Sandbox Code Playgroud)
但是有一个错误: errorMessage = "Cannot read property 'content-length' of undefined";
我已经通过模拟http.ClientRequest并使用诸如formidable之类的表单解析器工具来与无服务器一起工作。
我正在使用lambda-proxy
API网关事件配置。
const Stream = require('stream').Readable;
const Formidable = require('formidable');
module.exports.upload = ( e, ctx, cb ) => {
let form = new Formidable.IncomingForm();
let stream = new Stream();
stream.push( e.body );
stream.push( null );
// NOTE: You'll likely want to toLowerCase() at least 'Content-Type' header key
stream.headers = e.headers;
form.parse( stream, (err, fields, files) => {
// Work with your parsed form results here.
});
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
2945 次 |
最近记录: |