У меня есть фрагмент 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
});
Существует довольно простая общая функция, которая преобразует 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');
});
Работает как шарм! Большое спасибо.
Проверьте это. stackoverflow.com/a/21227124/8546128