我在 Heroku (cedar env) 上有一个 Rails 应用程序。它有一个页面,我使用它将画布数据渲染到图像中toDataURL()
方法。我正在尝试使用 JavaScript 将返回的 base64 图像数据字符串直接上传到 s3 (绕过服务器端)。问题是,既然这不是一个文件,我如何将base64编码的数据直接上传到S3并将其保存为文件?
我找到了一种方法来做到这一点。经过大量搜索后,查看了不同的教程。
您必须将数据 URI 转换为 blob,然后使用 CORS 将该文件上传到 S3,如果您正在处理多个文件,我对每个文件都有单独的 XHR 请求。
我发现这个函数可以将您的数据 URI 转换为一个 blob,然后可以使用 CORS 直接将其上传到 S3 (将数据 URI 转换为 Blob https://stackoverflow.com/a/11954337/1055838)
function dataURItoBlob(dataURI) {
var binary = atob(dataURI.split(',')[1]);
var array = [];
for(var i = 0; i < binary.length; i++) {
array.push(binary.charCodeAt(i));
}
return new Blob([new Uint8Array(array)], {type: 'image/jpeg'});
}
这是一个关于直接上传到 S3 的精彩教程,您需要自定义代码以允许 blob 而不是文件。 http://www.ioncannon.net/programming/1539/direct-browser-uploading-amazon-s3-cors-fileapi-xhr2-and-signed-puts/
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)