AngularJS 双向绑定 <input type='file'>中文件名,文件内容
2017-02-23 10:01
483 查看
通过ng-model获取文件名,文件内容无效,这里用的都是双向绑定,但是双向绑定时参数传过去是undefined或者为空
<div ng-controller="getFileCtrl" >
<input type="file" ng-model="feupload" />{{feupload}}
</div>
(1)如何获取文件内容
在网上搜了搜,发现一种方法:onchange改变事件
<div ng-controller="getFileCtrl" >
<input type="file" ng-src={{files[0].name}} onchange='angular.element(this).scope().fileChanged(this)'/>
<input type="text" ng-model="filename" value="filename" >
<textarea ng-model="fileContent" value="fileContent" ><textarea>
</div>
(2)如何数据绑定文件内容,显示到界面中
Angular使用的是脏检测,意味着当改变数据之后,你自己要做一些事情来触发脏检测,然后再应用到这个数据对应的DOM元素上
JS代码:
$scope.fileChanged = function(ele){
$scope.files = ele.files;
var file = document.querySelector('input[type=file]').files[0];
var filename = $scope.files[0].name;
if(filename.length> 1 && filename ) {
var ldot = filename.lastIndexOf(".");
var type = filename.substring(ldot + 1); //文件类型
$scope.fileName=filename.slice(0,ldot);//文件名
//读取文件内容
var reader =new FileReader();
reader.readAsTest(file,"UTF-8");
reader.onload=function(evt){
$scope.fileContent=ev.target.result;
$scope.$apply(); //传播Model的变化。//很重要,等文件内容读出完以后,开启脏检测,这样就将文件名字,内容绑定到界面上显示
}
}
}
<div ng-controller="getFileCtrl" >
<input type="file" ng-model="feupload" />{{feupload}}
</div>
(1)如何获取文件内容
在网上搜了搜,发现一种方法:onchange改变事件
<div ng-controller="getFileCtrl" >
<input type="file" ng-src={{files[0].name}} onchange='angular.element(this).scope().fileChanged(this)'/>
<input type="text" ng-model="filename" value="filename" >
<textarea ng-model="fileContent" value="fileContent" ><textarea>
</div>
(2)如何数据绑定文件内容,显示到界面中
Angular使用的是脏检测,意味着当改变数据之后,你自己要做一些事情来触发脏检测,然后再应用到这个数据对应的DOM元素上
JS代码:
$scope.fileChanged = function(ele){
$scope.files = ele.files;
var file = document.querySelector('input[type=file]').files[0];
var filename = $scope.files[0].name;
if(filename.length> 1 && filename ) {
var ldot = filename.lastIndexOf(".");
var type = filename.substring(ldot + 1); //文件类型
$scope.fileName=filename.slice(0,ldot);//文件名
//读取文件内容
var reader =new FileReader();
reader.readAsTest(file,"UTF-8");
reader.onload=function(evt){
$scope.fileContent=ev.target.result;
$scope.$apply(); //传播Model的变化。//很重要,等文件内容读出完以后,开启脏检测,这样就将文件名字,内容绑定到界面上显示
}
}
}
相关文章推荐
- angularJs 取<input type='file'>中文件名 (ng-model获取不了)
- angularJs 取<input type='file'>中文件名
- JQuery------获取<input type="file">中的文件内容
- Iterator<FileItem>的使用,实现文件(图片)上传,限制图片格式,设置随机文件名
- angularjs中<div contenteditable="true">的双向数据绑定的demo
- 关于获取<input type='file'>获取文件的路径问题
- JQuery------获取<input type="file">中的文件内容
- 解决微信内嵌浏览器无法响应<input type='file'>上传文件的思路
- <input type='file'/>选择文件,通过ajax方式传递选择的文件,后端使用controller接受
- 关于jsp中<input type="file">获取路径问文件名,获取完全路径问题
- 判断多个<input type="file">是否有已经选择好文件的
- 黑马程序员——>第二十天<io流(File-Proterties-合并流-切割文件)>
- 通过<input type=“file”>上传文件问题
- 解决微信内嵌浏览器无法响应<input type='file'>上传文件的思路
- <转>BufferedReader和FileReader读取txt文件乱码
- Linux 下当前可执行文件如何获取自身文件名与全路径<转>
- asp.net/c# 用<input type="file" />实现文件上传,multipart/form-data
- PrimeFaces <p:fileUpload>上传文件 中文乱码
- 对文件列表List<File>按名称排序
- file 读写/data/data/<应用程序名>目录上的文件