国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

AngularJS 文件上傳控件 ng-file-upload詳解

2019-11-19 17:56:49
字體:
來源:轉載
供稿:網友

網上可以找到的 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"/>  <div class="button" ngf-select ng-model="file" name="file" ngf-pattern="'image/*" accept="image/*" ngf-max-size="20MB" ngf-min-height="100">Select</div>  <button type="submit" ng-click="submit()">submit</button>  {{fileInfo.name}}<br/>  {{fileInfo.size}} </form></body></html>

這是前端頁面,后端如果用Java的話可以用commons-fileupload等文件上傳類庫。

注意

如果后端使用了Struts等框架,框架的過濾器會自動處理http請求中的上傳的文件部分,造成在Servlet中獲取不到請求的文件數據。

解決方法一是更改Struts配置文件,將文件上傳的過濾器改為我們自己編寫的空白過濾器

解決方法二是像submit一個帶有<input type="file">的form表單一樣,讓Struts自動獲取到上傳的文件。只需要在Servlet中添加一個File類型的屬性,并加入get/set方法。屬性的名字一定要是file!!!

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 通江县| 阿城市| 日土县| 白城市| 凤城市| 萨嘎县| 依安县| 莲花县| 顺平县| 大名县| 德惠市| 宁安市| 新疆| 高安市| 志丹县| 望城县| 汝阳县| 瑞金市| 巴楚县| 正蓝旗| 台江县| 两当县| 浠水县| 贡觉县| 新巴尔虎左旗| 庆云县| 板桥市| 阿拉善右旗| 博野县| 哈巴河县| 兴化市| 密云县| 皮山县| 西安市| 资源县| 长丰县| 望城县| 余干县| 金门县| 商水县| 天等县|