一共有本地读取或服务器读取两个套路,分以下三种方法。
方法1:使用URL.createObjectURL()创建blob链接
核心方法:objectURL = URL.createObjectURL(blob);
注意:
此方法尚在beta版本中,浏览器支持较差。
详细步骤见:用户上传图片时在网页上实时预览本地图
方法2:H5方法-使用FileReader文件读取器创建文件DataURL
核心方法:fileReader.readAsDataURL(file);
步骤:
- 用构造函数实体化new一个文件读取器FileReader
- 用实体化出来的文件读取器调用readAsDataURL方法,将文件对象作为参数传进去,读取文件为dataURL(要先调用一下这个函数才能在下一步使用result)
3.读取器的result属性就是我们需要用到的dataURL - 文件读取器的onload回调函数:将这个result作为链接写入img的src
//var到input
var input = document.getElementById("input");
//监听input,数值变化onchange即用户上传了文件
input.onchange = function(){
//获取用户上传的文件对象
var theFile = input.files[0];
//实例化一个文件读取器
var fileReader = new FileReader();
//将用户上传的文件对象作为参数,传入文件读取器的方法readAsDataURL
fileReader.readAsDataURL(theFile);
//文件读取器方法执行完毕后调用函数
fileReader.onload = function (){
//文件读取器的result属性即fileReader.result,就是上传文件的dataURL
document.getElementsByTagName("img")[0].src = fileReader.result;
}
}
方法3:Ajax文件上传获取服务器链接
核心方法:
- 用ajax上传文件后,获取服务器中的图片链接
- 服务器中的图片链接赋值给页面中的img
其中,ajax2.0上传文件的方法详见:用AJAX2.0上传富文本编辑器内容、字符串、文件等
2018.1.11