input上传图片后预览图片的功能实现

一共有本地读取或服务器读取两个套路,分以下三种方法。

方法1:使用URL.createObjectURL()创建blob链接

核心方法:objectURL = URL.createObjectURL(blob);

注意:
此方法尚在beta版本中,浏览器支持较差。
详细步骤见:用户上传图片时在网页上实时预览本地图

方法2:H5方法-使用FileReader文件读取器创建文件DataURL

核心方法:fileReader.readAsDataURL(file);

FileReader - MDN文档

步骤:
  1. 用构造函数实体化new一个文件读取器FileReader
  2. 用实体化出来的文件读取器调用readAsDataURL方法,将文件对象作为参数传进去,读取文件为dataURL(要先调用一下这个函数才能在下一步使用result)
    3.读取器的result属性就是我们需要用到的dataURL
  3. 文件读取器的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文件上传获取服务器链接

核心方法:
  1. 用ajax上传文件后,获取服务器中的图片链接
  2. 服务器中的图片链接赋值给页面中的img
    其中,ajax2.0上传文件的方法详见:用AJAX2.0上传富文本编辑器内容、字符串、文件等

2018.1.11

你可能感兴趣的:(input上传图片后预览图片的功能实现)