readAsDataURL
method is used to read the contents of the specified
Blob
or
File
. When the read operation is finished, the
readyState
becomes
DONE
,和
loadend
is triggered. At that time, the
result
attribute contains the data as a
data: URL
representing the file's data as a base64 encoded string.
注意:
The blob's
result
cannot be directly decoded as Base64 without first removing the Data-URL declaration preceding the Base64-encoded data. To retrieve only the Base64 encoded string, first remove
data:*/*;base64,
from the result.
instanceOfFileReader.readAsDataURL(blob);
<input type="file" onchange="previewFile()"><br> <img src="" height="200" alt="Image preview...">
function previewFile() {
const preview = document.querySelector('img');
const file = document.querySelector('input[type=file]').files[0];
const reader = new FileReader();
reader.addEventListener("load", function () {
// convert image file to base64 string
preview.src = reader.result;
}, false);
if (file) {
reader.readAsDataURL(file);
}
}
<input id="browse" type="file" onchange="previewFiles()" multiple> <div id="preview"></div>
function previewFiles() {
var preview = document.querySelector('#preview');
var files = document.querySelector('input[type=file]').files;
function readAndPreview(file) {
// Make sure `file.name` matches our extensions criteria
if ( /\.(jpe?g|png|gif)$/i.test(file.name) ) {
var reader = new FileReader();
reader.addEventListener("load", function () {
var image = new Image();
image.height = 100;
image.title = file.name;
image.src = this.result;
preview.appendChild( image );
}, false);
reader.readAsDataURL(file);
}
}
if (files) {
[].forEach.call(files, readAndPreview);
}
}
注意:
FileReader()
constructor was not supported by Internet Explorer for versions before 10. For a full compatibility code you can see our
crossbrowser possible solution for image preview
。另请参阅
this more powerful example
.
| 规范 | 状态 | 注释 |
|---|---|---|
|
文件 API
The definition of 'readAsDataURL()' in that specification. |
工作草案 | 初始定义 |
| 桌面 | 移动 | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
readAsDataURL
|
Chrome 7 | Edge 12 | Firefox 3.6 | IE 10 | Opera 11 | Safari 6 | WebView Android ≤37 | Chrome Android 18 |
Firefox Android
32
|
Opera Android 11 | Safari iOS 6.1 | Samsung Internet Android 1.0 |
完整支持
见实现注意事项。
FileReader
abort()
readAsArrayBuffer()
readAsBinaryString()
readAsDataURL()
readAsText()