发表于: 2017-07-15 23:33:18

1 856


一、今天完成的事:

1.学习HTML FileReader对象的方法;

2.尝试原生js实现图片上传,并显示预览和文件名称以及大小;

二、明天的计划:

1.继续研究图片上传问题

三、遇到的问题:

1.js实现图片上传的时候,获取图片正常,但是无法ng-repeat出来图片的名称和大小,请大佬查看后发现是ng-repeat的对象错了导致;

2.行业大图和下面的select框联动的时候,想直接用ng-modle绑定的数据来控制下面的select的显示,研究发现可以在ng-show里面设置表达式,直接判断上面的ng-modle是否选择的是行业大图;

四、收获:

1、学习了一下input的file类型时,会生成一个默认的files数组,里面存放的是文件的对象,然后根据HTNL5的FileReader属性转化文件的url或则文本;

FileReader默认有4个方法:

方法名参数描述
abortnone中断读取
readAsBinaryStringfile将文件读取为二进制码
readAsDataURLfile将文件读取为 DataURL
readAsTextfile, [encoding]将文件读取为文本

有默认事件:

事件描述
onabort中断时触发
onerror出错时触发
onload文件读取成功完成时触发
onloadend读取完成触发,无论成功或失败
onloadstart读取开始时触发
onprogress读取中

这样就可以实现图片传和预览了:

 $scope.$apply(function(){
var file = document.getElementById("file1").files;
       $scope.file = file;
       console.log($scope.file);
       var reader = new FileReader();
       reader.readAsDataURL(file[0]);
       // 图片文件转换为base64
       reader.onload = function(){
// 显示图片
           document.getElementById("file_img").src = this.result;
       }
})
}

2、可以直接在ng-show中写表达式:判断上一个select的值即可;

ng-show="select1 == 3 " 

3.转化图片文件大小,并控制显示小数位的方法:

<td>{{file.size/(1024*1024)|number:2}}MB</td>



返回列表 返回列表
评论

    分享到