Ответ 1
var reader = new FileReader();
reader.readAsDataURL(blob);
reader.onloadend = function() {
base64data = reader.result;
console.log(base64data);
}
Сформировать документы readAsDataURL
кодирует в base64
Это фрагмент кода, который я хочу сделать Blob
до Base64
:
Эта часть комментария работает, и когда URL, сгенерированный с помощью этого параметра, установлен в img src, он отображает изображение:
var blob = items[i].getAsFile();
//var URLObj = window.URL || window.webkitURL;
//var source = URLObj.createObjectURL(blob);
//console.log("image source=" + source);
var reader = new FileReader();
reader.onload = function(event){
console.log(event.target.result)
}; // data url!
var source = reader.readAsBinaryString(blob);
Проблема с нижним кодом, сгенерированная исходная переменная имеет значение null
Обновление:
Есть ли более простой способ сделать это с помощью JQuery, чтобы иметь возможность создавать Base64 String из Blob файла, как в приведенном выше коде?
var reader = new FileReader();
reader.readAsDataURL(blob);
reader.onloadend = function() {
base64data = reader.result;
console.log(base64data);
}
Сформировать документы readAsDataURL
кодирует в base64
это сработало для меня:
var blobToBase64 = function(blob, callback) {
var reader = new FileReader();
reader.onload = function() {
var dataUrl = reader.result;
var base64 = dataUrl.split(',')[1];
callback(base64);
};
reader.readAsDataURL(blob);
};
Таким образом, проблема в том, что вы хотите загрузить базовое изображение 64, и у вас есть URL-адрес большого двоичного объекта. Теперь ответ, который будет работать во всех браузерах HTML 5: Do:
var fileInput = document.getElementById('myFileInputTag');
var preview = document.getElementById('myImgTag');
fileInput.addEventListener('change', function (e) {
var url = URL.createObjectURL(e.target.files[0]);
preview.setAttribute('src', url);
});
function Upload()
{
// preview can be image object or image element
var myCanvas = document.getElementById('MyCanvas');
var ctx = myCanvas.getContext('2d');
ctx.drawImage(preview, 0,0);
var base64Str = myCanvas.toDataURL();
$.ajax({
url: '/PathToServer',
method: 'POST',
data: {
imageString: base64Str
},
success: function(data) { if(data && data.Success) {}},
error: function(a,b,c){alert(c);}
});
}
вы можете исправить проблему:
var canvas = $('#canvas');
var b64Text = canvas.toDataURL();
b64Text = b64Text.replace('data:image/png;base64,','');
var base64Data = b64Text;
Я надеюсь, что это поможет вам
var audioURL = window.URL.createObjectURL(blob);
audio.src = audioURL;
var reader = new window.FileReader();
reader.readAsDataURL(blob);
reader.onloadend = function () {
base64data = reader.result;
console.log(base64data);
}
Самый простой способ в одной строке кода
var base64Image = новый буфер (blob, 'binary').toString('base64');
(async () => console.log(btoa(await new Response(blob).text())))();
или же
new Response(blob).text().then(t => console.log(btoa(t)))
см. Конструктор откликов, вы можете превратить [blob, buffer source form data, readable stream, etc.]
в Response, который затем можно превратить в [json, text, array buffer, blob]
который выполняет асинхронный метод/обратные вызовы.