使用FileReader实现前端预览所选图片

需求描述

在浏览器环境下进开发网站(也就是B/S架构的应用),获取到当前设备上的图片后,但愿能够在上传到服务器前简单预览一下图片内容。javascript

具体实现

主要代码

html 部分html

<input type="file" id="check_file" />
<img src="" id="preview_image" />

javascript 部分java

var fileElem = document.getElementById('check_file');
var imgElem = document.getElementById('preview_image');
fileElem.addEventListener('change', function (event) {
    //TODO 预览
    var target = event.target;
});

直接使用图片地址

imgElem.src = target.value;

结果信息:浏览器

Not allowed to load local resource: file:///xxx

意味着不能经过图片文件在设备上的路径,直接访问这个图片。静态html在本地测试时,能够经过安装插件等方式临时解决这个阻碍。可是实际生产中html文件一般是在服务器上,而非客户端设备上,那么这个方案是行不通的。服务器

将图片转为base64编码

若是图片不是特别大,能够尝试将其转为base64编码来实现预览的效果,这里使用 FileReader 这个API来实现。架构

var fileReader = new FileReader();
fileReader.onload = function (readEvent) {
    imgElem.src = readEvent.target.result;
};

参考文档

相关文章
相关标签/搜索