Как загрузить фото в AWS S3 с помощью Fetch API? - PullRequest
4 голосов
/ 07 мая 2020

Я пытаюсь загрузить файл фотографии в корзину S3 с помощью Fetch API. Я получаю сообщение 400 Bad Request при попытке загрузить фотографию. Я правильно получаю предварительно подписанный URL-адрес сообщения и сведения о файле, но я считаю, что способ форматирования formData неверен.

Я использую входной файл html, который использует onchange для запуска javascript функции handlePhoto.

html это

<input type="file" onchange="handlePhoto()" id="file_input"/>

и javascript функция

function handlePhoto(){
    const file = document.getElementById('file_input').files[0]
    let formData = new FormData()
    fetch("/v1/photos/get_presigned_post/" , {
      method: "GET"
    })
    .then(response => response.json())
    .then(s3Result => {
      const { url, fields } = s3Result;
      Object.keys(s3Result.fields).forEach(key => {
        formData.append(key, s3Result.fields[key]);
      });
      formData.append('acl', 'public-read');
      formData.append('Content-Type', file.type);
      formData.append("file", file);

      fetch(url, {
        method: "POST",
        body: formData,
        headers: {
          "Content-Type": "multipart/form-data"
        }
      })
  });
}

Любая помощь будет принята с благодарностью.

...