上传从 html 转换为 s3 的图像文件
upload image file converted from html to s3
我有一张 HTML,我使用 html-to-image
将其转换为图像,现在我需要将该图像文件上传到 s3。
转换后得到的是base 64url。我在远程后端设置了 s3,我将文件发送到 api 路由并将其上传到 s3 和 returns 文件的 s3 url。
如何将此基础 url 转换为图像对象并将其发送到 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');
});
我有一张 HTML,我使用 html-to-image
将其转换为图像,现在我需要将该图像文件上传到 s3。
转换后得到的是base 64url。我在远程后端设置了 s3,我将文件发送到 api 路由并将其上传到 s3 和 returns 文件的 s3 url。
如何将此基础 url 转换为图像对象并将其发送到 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');
});