Я пытаюсь загрузить изображение PNG (вложение), а также некоторый текст в мою aws лямбду (которая интегрирована с шлюзом API) из Vue JS, используя fetch, цель этого состоит в том, чтобы перешлите эти данные формы в API JIRA cloud rest, чтобы создать «билет на выдачу» в JIRA с приложенным приложением.
Я делаю это, помещая изображение и текст в данные формы, затем отправляю данные формы в мою лямбду, как multipart / form-data с использованием fetch.
Клиентский POST-запрос:
var formData = new FormData();
formData.set('title', 'some text');
formData.set('comment', 'some text');
formData.append('file', file, file.name);
let options = {
method: 'POST',
body: formData,
};
return fetch(url, options)
.then(response => {
console.log('Response: ', response);
return response.text();
})
.then((result) => {
console.log('Result: ', result);
})
.catch(error => console.log('error', error));
Я настроил свой API-шлюз для преобразования multipart / form-data в строку типа base 64 после формирования данных формы лямбда получена, я использую lambda-multipart-parser для извлечения данных из строки base 64. Затем идет лямбда и создает билет JIRA, а затем прикрепляет изображение к этому билету. Билет JIRA успешно создан, однако проблема, с которой я сталкиваюсь, связана с изображением, кажется, что изображение прикреплено к заявке, но повреждено / содержит ошибки и не может быть открыто.
Неполный лямбда-код:
let data = await parser.parse(event);
let formdata = new FormData();
formdata.append('file', data.files[0].content, data.files[0].filename);
let boundary = formdata.getBoundary();
let attachment = {
method: 'POST',
headers: {
'Accept': 'application/json',
'Content-Type': `multipart/form-data;boundary=${boundary}`,
'X-Atlassian-Token': 'no-check'
},
body: formdata
};
return fetch(`https://hostname/rest/api/3/issue/${issueId}/attachments`, attachment)
.then(response => {
return response.text();
})
.then((result) => {
console.log('Result: ', result);
})
.catch(error => console.log('error', error));
Любые предложения о том, почему файл изображения содержит ошибки, очень приветствуются.