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);
					

参数

blob
Blob or File from which to read.

范例

HTML

<input type="file" onchange="previewFile()"><br>
<img src="" height="200" alt="Image preview...">
					

JavaScript

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);
  }
}
					

Live Result

Example reading multiple files

HTML

<input id="browse" type="file" onchange="previewFiles()" multiple>
<div id="preview"></div>
					

JavaScript

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.
工作草案 初始定义

浏览器兼容性

The compatibility table on this page is generated from structured data. If you'd like to contribute to the data, please check out https://github.com/mdn/browser-compat-data and send us a pull request. 更新 GitHub 上的兼容性数据
桌面 移动
Chrome Edge Firefox Internet Explorer Opera Safari Android webview Chrome for Android Firefox for Android Opera for Android Safari on iOS Samsung Internet
readAsDataURL Chrome 7 Edge 12 Firefox 3.6 IE 10 Opera 11 Safari 6 WebView Android ≤37 Chrome Android 18 Firefox Android 32
32
Using the camera in Android 8.x raises an exception. See bug 1511083 .
Opera Android 11 Safari iOS 6.1 Samsung Internet Android 1.0

图例

完整支持

完整支持

见实现注意事项。

另请参阅

元数据

  • 最后修改: