亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

 更新時(shí)間:2017年01月13日 11:45:29   作者:岳小昊  
這篇文章主要介紹了AngularJS 文件上傳控件 ng-file-upload詳解,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧

網(wǎng)上可以找到的 AngularJS 的文件上傳控件有兩個(gè):

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

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

這兩個(gè)非常類似,連js文件的結(jié)構(gòu)都是一樣的。核心的js是.min.js,還都有一個(gè)-shim.min.js,用來支持上傳進(jìn)度條和上傳暫停等高級(jí)功能。

按道理講shim.js應(yīng)該是可加可不加,但實(shí)測(cè)-shim.min.js必須包含,否則有js文件加載問題。但是angular-file-upload-shim.min.js這個(gè)文件在github上不存在?。?!

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

angular-file-upload 是一款輕量級(jí)的 AngularJS 文件上傳工具,為不支持瀏覽器的 FileAPI polyfill 設(shè)計(jì),使用 HTML5 直接進(jìn)行文件上傳。

 特性

支持上傳進(jìn)度,在上傳的時(shí)候,可以取消或者中止,支持文件拖拽(HTML5),目錄拖拽(weikit),CORS, PUT(html5)/POST 方法

支持使用 Flash polyfill FileAPI  跨瀏覽器上傳 (HTML5 和 non-HTML5) 。允許客戶端在上傳之前驗(yàn)證或者修改文件。

當(dāng)文件的內(nèi)容類型使用 $upload.http()時(shí),支持直接上傳到 CouchDB,imgur 等等。支持 Angular http POST/PUT 請(qǐng)求的進(jìn)度事件

輕量級(jí),使用常規(guī)的 $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({
     //服務(wù)端接收
     url: 'Ashx/UploadFile.ashx',
     //上傳的同時(shí)帶的參數(shù)
     data: {'username': $scope.username},
     //上傳的文件
     file: file
    }).progress(function (evt) {
     //進(jìn)度條
     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}}"/>
  當(dāng)前上傳用戶:<input type="text" placeholder="請(qǐng)輸入您的名稱" 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等框架,框架的過濾器會(huì)自動(dòng)處理http請(qǐng)求中的上傳的文件部分,造成在Servlet中獲取不到請(qǐng)求的文件數(shù)據(jù)。

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

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

以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

最新評(píng)論