Aws проблема загрузки лямбда-изображения - PullRequest
0 голосов
/ 13 марта 2020

Я пытаюсь загрузить изображение 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));

Любые предложения о том, почему файл изображения содержит ошибки, очень приветствуются.

...