angular文件上传php,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文件的结构都是一样的。核心的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 功能

文件上传

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);

});

};

});

%7B%7BuploadImg%7D%7D

当前上传用户:

Select

submit

{{fileInfo.name}}

{{fileInfo.size}}

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

注意

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

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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值