Загрузить файл изображения, преобразованный из html в s3

У меня есть фрагмент HTML, который я преобразовал в изображение с помощью html-to-image, и теперь мне нужно загрузить этот файл изображения на s3.

То, что я получаю после преобразования, является базовым 64 URL-адресом. У меня есть настройка s3 на удаленном бэкэнде, где я отправляю файлы на маршрут API, и он загружает их на s3 и возвращает URL-адрес s3 для файла.

Как я могу преобразовать этот базовый URL-адрес в изображение obj и отправить его в API?

Функция преобразования html в img:

htmlToImage.toPng(document.getElementById('my-node'))
  .then(function (dataUrl) {
    // do stuff with url
});

Проверьте это. stackoverflow.com/a/21227124/8546128

Anh Nhat Tran 13.12.2020 12:37
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Массив зависимостей в React
Массив зависимостей в React
Все о массиве Dependency и его связи с useEffect.
1
1
192
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Существует довольно простая общая функция, которая преобразует URL-адрес данных изображения в файловый объект, определенный следующим образом:

function dataURLtoFile(dataurl, filename) {
  var arr = dataurl.split(','), mime = arr[0].match(/:(.*?);/)[1],
    bstr = atob(arr[1]), n = bstr.length, u8arr = new Uint8Array(n);
  while(n--){
    u8arr[n] = bstr.charCodeAt(n);
  }
  return new File([u8arr], filename, { type:mime });
}

// Usage in your case

htmlToImage.toPng(document.getElementById('my-node'))
  .then(function (dataUrl) {
    const yourFile = dataURLtoFile(dataUrl, 'yourImageName');   
  });

Работает как шарм! Большое спасибо.

Surya Mahla 14.12.2020 04:56

Другие вопросы по теме