У меня проблема с моей реализацией AWS.Я посылаю ему формданные, которые проходят через шлюз, используя Lambda Proxy integration
, а затем вводят лямбда-код JavaScript.Когда я регистрирую
Когда я регистрирую содержимое, переданное в мой обработчик, данные формы выглядят так:
body: '----------------------------786143169777267628398804\r\nContent-Disposition: form-data; name="channel"\r\n\r\nProduction\r\n----------------------------786143169777267628398804\r\nContent-Disposition: form-data; name="releaseDate"\r\n\r\n2019-01-30T14:19:08.997Z\r\n----------------------------786143169777267628398804\r\nContent-Disposition: form-data; name="releaseNotes"\r\n\r\nTest Release Notes\r\n----------------------------786143169777267628398804\r\nContent-Disposition: form-data; name="productLine"\r\n\r\nIO Module\r\n----------------------------786143169777267628398804\r\nContent-Disposition: form-data; name="encryption"\r\n\r\nNone\r\n----------------------------786143169777267628398804\r\nContent-Disposition: form-data; name="firmware"; filename="f0-0-11.bin"\r\nContent-Type: application/octet-stream\r\n\r\nü1¡±ÌéwhûF¸¿÷\u0010ÜÚ/˜ú›MP=K§Û¦D\u000f\'\u0005lý«\u001c‡T3äwzYûjk¦k\u0013\u0017bWÅb‚Þ\r×—ÏtOH\u0016Þ@¹¡þûÚ\u0001awuõþðSMıߛKc¼ \u001c-\u0013P>žåWp½qþ:¼®¿\u0007¡CŒìÄÕ`p\u0015¯1µûNÔ=ÄøÅK‰ôß?•\fû\u0005\u001d\u0003åA\r:@èê\f¡$<<öÔY2˜®±f\f¾×\u000e}\u0014é!]]fB½nÝò^:ÿî!ª´r’‚ã³î^\u001b‰\bGÔ¬>ˆCéÆ7ÙòWA¸>¢ØÃ\u0006ÐtîãQÆf¹›Ü‚•EVh·§\u0013ºãæÙÅè\u001a)x²Fã*ª\u0013ú\'O „$añîAÂÖ‡\u001f\u001f:r»Ø…—P95#H^Ìn«S\u001d¤\u0001\u000b»^»‹)T\u0012þ‹\u0001«\u0013P5(3.Ùýõ\u0002\u0004ŽÏÚ\u000eB7Ô+ý¡¤ø\u001fê\rÒ88ñ3\u0016&sNÖ\u0006SÝ\u0014ô/Ñle¿\'´`Û¿=x hP°A^/…[Ú)IS\u000e‡Ð.ˆ\u001d\u0016R`ÙJ\u0002x*\u00145fCن丟\u001aW̓cKÔÁæ4\u001bí£\u0000\u0018z\u0017u… (continued)
Я хочу передать это в метод s3.putObject()
.Я использую busboy
для извлечения файла и передачи его в метод, но он передает его, в той же кодировке, из которой он получен.
для полноты мой обработчик busboy выглядит так:
getFormData: async function (event, context) {
return new Promise(function (resolve, reject) {
const contentType = event.headers['Content-Type'] ||
event.headers['content-type'];
const bb = new busboy({
headers: {
'content-type': contentType
}
});
const response = {};
bb.on('file',
function (fieldName, file, filename, encoding, mimetype) {
file
.on('data',
data => {
response[fieldName] = data;
})
.on('end',
() => {
});
})
bb.end(event.body);
});
},
Я не уверен, является ли это проблемой с данными, преобразуемыми шлюзом, или я просто не знаю, как правильно обрабатывать их в лямбде.