图片上传获取信息并显示


要点

FileReader

使Web应用程序异步读取存储在用户计算机上的文件(或原始数据缓冲区)的内容(详情

对象URL

  • window.URL.createObjectURL():创建一个对象URL来通过url引用一个file对象
  • window.URL.revokeObjectURL():对象URL是唯一的,动态使用必须手动释放
    对象URL

代码实现

html

1
2
3
<input type="file" id="myInput" multiple/>
<!-- 图片显示区域 -->
<div id="preview"></div>

css

1
2
3
.imageItem {
width: 100px;
}

js

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
const myInput = document.querySelector('#myInput');
myInput.addEventListener('change', handleFiles, false);

function handleFiles() {
const filesList = this.files;
for (let item of filesList) {
let imageType = /^image\//;
if (!imageType.test(item.type)) {
continue
}
;

const img = document.createElement('img');
const preview = document.querySelector('#preview');
img.classList.add('imageItem');

// 原始方法:获取图片的二进制数据,存入新的img标签
img.file = item;
preview.appendChild(img);

const reader = new FileReader();
reader.onload = e => {
img.src = e.target.result;
}
reader.readAsDataURL(item);

// 快捷方法:使用对象URL
img.src = URL.createObjectURL(item);
img.onload = () => {
URL.revokeObjectURL(this.src);
}
preview.appendChild(img);
}
}