最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

AngularJS文件上传控件ng-file-upload的用法

来源:动视网 责编:小采 时间:2020-11-27 20:12:04
文档

AngularJS文件上传控件ng-file-upload的用法

AngularJS文件上传控件ng-file-upload的用法:网上可以找到的 AngularJS 的文件上传控件有两个: angular-file-upload:https://github.com/nervgh/angular-file-upload ng-file-upload:https://github.com/danialfarid/ng-file-upload 这两个非常类似,连js
推荐度:
导读AngularJS文件上传控件ng-file-upload的用法:网上可以找到的 AngularJS 的文件上传控件有两个: angular-file-upload:https://github.com/nervgh/angular-file-upload ng-file-upload:https://github.com/danialfarid/ng-file-upload 这两个非常类似,连js


网上可以找到的 AngularJS 的文件上传控件有两个:

    angular-file-upload:https://github.com/nervgh/angular-file-upload
    ng-file-upload:https://github.com/danialfarid/ng-file-upload

  这两个非常类似,连js文件的结构都是一样的。核心的js是.min.js,还都有一个-shim.min.js,用来支持上传进度条和上传暂停等高级功能。

  按道理讲shim.js应该是可加可不加,但实测-shim.min.js必须包含,否则有js文件加载问题。但是angular-file-upload-shim.min.js这个文件在github上不存在!!!

  所以用ng-file-upload!用ng-file-upload!用ng-file-upload!

  angular-file-upload 是一款轻量级的 AngularJS 文件上传工具,为不支持浏览器的 FileAPI polyfill 设计,使用 HTML5 直接进行文件上传。
  

特性
  支持上传进度,在上传的时候,可以取消或者中止,支持文件拖拽(HTML5),目录拖拽(weikit),CORS, PUT(html5)/POST 方法

  支持使用 Flash polyfill FileAPI 跨浏览器上传 (HTML5 和 non-HTML5) 。允许客户端在上传之前验证或者修改文件。

  当文件的内容类型使用 $upload.http()时,支持直接上传到 CouchDB,imgur 等等。支持 Angular http POST/PUT 请求的进度事件

  轻量级,使用常规的 $http 来上传(支持非 HTML5 浏览器),所以提供所有 Angular $http 功能
<!DOCTYPE html><html ng-app="app"><head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
 <title>文件上传</title>
 <meta charset="utf-8"/>
 <script src="JS/angular.min.js"></script>
 <script src="JS/ng-file-upload.min.js"></script>
 <script src="JS/ng-file-upload-shim.min.js"></script>
 <script>
 var app = angular.module('app', ['ngFileUpload']);
 app.controller('FileController', function ($scope, Upload) {
 $scope.uploadImg = ''; //提交
 $scope.submit = function () {
 $scope.upload($scope.file);
 };
 $scope.upload = function (file) {
 $scope.fileInfo = file;
 Upload.upload({ //服务端接收
 url: 'Ashx/UploadFile.ashx', //上传的同时带的参数
 data: {'username': $scope.username}, //上传的文件
 file: file
 }).progress(function (evt) {
 //进度条
 var progressPercentage = parseInt(100.0 * evt.loaded / evt.total);
 console.log('progess:' + progressPercentage + '%' + evt.config.file.name);
 }).success(function (data, status, headers, config) {
 //上传成功
 console.log('file ' + config.file.name + 'uploaded. Response: ' + data);
 $scope.uploadImg = data;
 }).error(function (data, status, headers, config) {
 //上传失败
 console.log('error status: ' + status);
 });
 };
 }); </script></head><body>
 <form ng-controller="FileController">
 <img src="{{uploadImg}}"/>
 当前上传用户:<input type="text" placeholder="请输入您的名称" name="name" ng-model="username"/>
 <p class="button" ngf-select ng-model="file" name="file" ngf-pattern="'image/*" accept="image/*" ngf-max-size="20MB" ngf-min-height="100">Select</p>
 <button type="submit" ng-click="submit()">submit</button>
 {{fileInfo.name}}<br/>
 {{fileInfo.size}}
 </form></body></html>

这是前端页面,后端如果用Java的话可以用commons-fileupload等文件上传类库。

注意
  如果后端使用了Struts等框架,框架的过滤器会自动处理http请求中的上传的文件部分,造成在Servlet中获取不到请求的文件数据。

  解决方法一是更改Struts配置文件,将文件上传的过滤器改为我们自己编写的空白过滤器

  解决方法二是像submit一个带有的form表单一样,让Struts自动获取到上传的文件。只需要在Servlet中添加一个File类型的属性,并加入get/set方法。属性的名字一定要是file!!!

文档

AngularJS文件上传控件ng-file-upload的用法

AngularJS文件上传控件ng-file-upload的用法:网上可以找到的 AngularJS 的文件上传控件有两个: angular-file-upload:https://github.com/nervgh/angular-file-upload ng-file-upload:https://github.com/danialfarid/ng-file-upload 这两个非常类似,连js
推荐度:
标签: 使用 upload angularjs
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top