Это фрагмент кода, который я хочу сделать 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 из файла Blob, как в приведенном выше коде?
javascript
jquery
кварки
источник
источник
onloadend
должен появиться раньшеreadAsDataURL
на тот случай, если произойдет что-то странное, и он завершит загрузку до того, как достигнет следующей строки кода. Очевидно, этого никогда не произойдет, но это все еще хорошая практика.это сработало для меня:
источник
cb
?источник
Существует чистый способ JavaSript, не зависящий от каких-либо стеков:
Для использования этой вспомогательной функции вы должны установить обратный вызов, например:
Я пишу эту вспомогательную функцию для моей проблемы в проекте React Native, я хотел загрузить изображение, а затем сохранить его как кэшированное изображение:
источник
или
см . конструктор Response , вы можете превратить его
[blob, buffer source form data, readable stream, etc.]
в Response , который затем можно преобразовать[json, text, array buffer, blob]
с помощью асинхронного метода / обратных вызовов.edit: как уже упоминалось @Ralph, превращение всего в строку utf-8 вызывает проблемы (к сожалению, в Response API нет способа преобразования в двоичную строку), поэтому буфер массива используется вместо этого в качестве промежуточного, что требует еще двух шагов (преобразование его в байтовый массив THEN в двоичную строку), если вы настаиваете на использовании собственного
btoa
метода.источник
btoa
вы можете решить проблему:
Я надеюсь, что это поможет вам
источник
Итак, проблема в том, что вы хотите загрузить изображение base 64 и у вас есть URL-адрес blob. Теперь ответ, который будет работать во всех браузерах html 5: Сделайте:
источник
Я хотел что-то, где у меня есть доступ к значению base64 для хранения в списке, и для меня сработало добавление прослушивателя событий. Вам просто понадобится FileReader, который прочитает большой двоичный объект изображения и вернет в результате base64.
Последняя часть - это readAsDataURL, который очень важен для чтения содержимого указанного Blob.
источник
Самый простой способ в одной строчке кода
источник