使用H5的FileApi预览将要上传的图片

具体要做的就是页面上有个<input type="file" />的按钮,用户在选择需要上传的图片后,页面上将要上传的图片预览出来。

以前的做法是,通过Ajax将要上传的图片上传到服务器,服务器响应成功后在页面上添加一张图片。如果上传错误,则需要将服务器上的图片也删除。

现在可以通过H5这样做,代码如下:

document.querySelector('#upfile').onchange = function (evt) {
    var files = evt.target.files;
    for(var i = 0, f; f = files[i]; i++){
        if(!f.type.match('image.*')) continue;
        
        var reader = new FileReader();
        reader.onload = (function(theFile){
            return function(e){
                var img = document.createElement('img');
                img.title = theFile.name;
                img.src = e.target.result;
                document.body.appendChild(img); //这里你想插哪插哪  
            }
        })(f);
        reader.readAsDataURL(f);
    }  
}

如果要一次上传多张图片,代码如下:

 document.querySelector('#upfile').onchange = function () {
 2     var fileReader = new FileReader();
 3     fileReader.onload = function (e) {
 4         if (fileReader.readyState == FileReader.DONE) {
 5             var img = document.createElement('img');
 6             img.src = this.result;
 7             document.body.appendChild(img); //示例只是简单插入body
 8         }
 9     }
10     //一次加载多个文件
11     var i = 0, src = this.files;
12     fileReader.readAsDataURL(src[i]);
13     fileReader.onloadend = function () {
14         i++;
15         if (i < src.length) fileReader.readAsDataURL(src[i]);
16     }
17 }
相应的html节点: <input type="file" id="upfile" multiple /> (如果不使用多选除去multiple)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值