将Blob字符串URL转换为Blob,然后转换为base64
Convert Blob string URL to Blob then to base64
我有一个图像元素,我从那里得到blob字符串URL,我正试图将其转换为blob,然后转换为base64字符串。这样我就可以发送base64字符串(这是存储在#originalImage)到服务器端。
JS
onFinished: function (event, currentIndex) {
var form = $(this);
if ($('#image').attr('src').length) {
var selectedFile = $('#image').attr('src');
var blob;
var reader = new window.FileReader();
var xhr = new XMLHttpRequest();
xhr.onreadystatechange = function () {
if (this.readyState == 4 && this.status == 200) {
blob = this.response;
console.log(this.response, typeof this.response);
if (blob != undefined) {
reader.readAsDataURL(blob);
}
}
}
xhr.open('GET', selectedFile);
xhr.responseType = 'blob';
xhr.send();
}
reader.onloadend = function () {
base64data = reader.result;
console.log(base64data);
if (base64data != undefined) {
$("#originalImage").val(base64data);
form.submit();
}
}
}
控制器 [HttpPost]
public ActionResult Action(Model blah, string croppedImage, string originalImage){
// Code here...
}
它按预期工作,但我唯一关心的是,我在哪里提交的形式是在reader.onloadend。这种方法有什么问题吗?或者有比这更好的方法吗?
我感谢任何帮助,谢谢!
不使用base64,发送二进制到服务器,节省时间、进程、内存和带宽
onFinished(event, currentIndex) {
let src = $('#image').attr('src')
if (src.length) {
fetch(src)
.then(res =>
res.ok && res.blob().then(blob =>
fetch(uploadUrl, {method: 'post', body: blob})
)
)
}
}
你也可以使用canvas并避免另一个请求(但这会将所有图像转换为png)
onFinished(event, currentIndex) {
let img = $('#image')[0]
if (!img.src) return
let canvas = document.createElement('canvas')
let ctx = canvas.getContext('2d')
canvas.width = img.width
canvas.height = img.height
ctx.drawImage(img, 0, 0)
canvas.toBlob(blob => {
fetch(uploadUrl, {method: 'post', body: blob})
})
}
相关文章:
- 将Excel BLOB转换为javascript数组
- 将dataUrl转换为blob并通过ajax提交
- Javascript将blob转换为字符串并返回
- 将Blob文本转换为Javascript中的数组/JSON对象
- JS:将纯文本 URL(在 blob 中)转换为链接或 iframe
- 如何在 Firefox 中查找特定的缓存条目并将它们转换为文件或 Blob 对象
- 是否可以使用html5将MediaStream转换为视频blob
- 将Blob数据转换为javascript或节点中的Raw缓冲区
- javascript:将BASE64转换为BLOB仅在safari中失败
- 将数据文件转换为blob
- 使用javascript将ByteArray转换为blob
- 如何有效地将THREE.Geometry转换为ArrayBuffer、File或Blob
- 将Blob字符串URL转换为Blob,然后转换为base64
- 使用php将blob数据转换为图像
- 将一块画布转换为blob类型
- 如何通过将视频blob转换为二进制数据包发送到node.js服务器
- 将blob文件转换为webm与Whammy Lib
- 将字节数组输出转换为Blob会损坏文件
- 将Blob转换为javascript中的文件列表
- JS将blob url转换为Base64文件