AngularJS 文件上傳控件 ng-file-upload詳解
網(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)度條和上傳暫停等高級功能。
按道理講shim.js應(yīng)該是可加可不加,但實(shí)測-shim.min.js必須包含,否則有js文件加載問題。但是angular-file-upload-shim.min.js這個(gè)文件在github上不存在!?。?/p>
所以用ng-file-upload!用ng-file-upload!用ng-file-upload!
angular-file-upload 是一款輕量級的 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 請求的進(jìn)度事件
輕量級,使用常規(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="請輸入您的名稱" 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中獲取不到請求的文件數(shù)據(jù)。
解決方法一是更改Struts配置文件,將文件上傳的過濾器改為我們自己編寫的空白過濾器
解決方法二是像submit一個(gè)帶有<input type="file">的form表單一樣,讓Struts自動獲取到上傳的文件。只需要在Servlet中添加一個(gè)File類型的屬性,并加入get/set方法。屬性的名字一定要是file?。?!
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- AngularJS實(shí)現(xiàn)圖片上傳和預(yù)覽功能的方法分析
- Angularjs實(shí)現(xiàn)上傳圖片預(yù)覽功能
- angularjs點(diǎn)擊圖片放大實(shí)現(xiàn)上傳圖片預(yù)覽
- angularjs實(shí)現(xiàn)多張圖片上傳并預(yù)覽功能
- AngularJs上傳前預(yù)覽圖片的實(shí)例代碼
- 學(xué)習(xí)使用AngularJS文件上傳控件
- angularjs客戶端實(shí)現(xiàn)壓縮圖片文件并上傳實(shí)例
- 通過AngularJS實(shí)現(xiàn)圖片上傳及縮略圖展示示例
- SpringMvc+Angularjs 實(shí)現(xiàn)多文件批量上傳
- Angularjs實(shí)現(xiàn)多圖片上傳預(yù)覽功能
相關(guān)文章
如何編寫一個(gè)完整的Angular4 FormText 組件
本篇文章主要介紹了如何編寫一個(gè)完整的Angular4 FormText 組件,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-11-11
angularjs2中父子組件的數(shù)據(jù)傳遞的實(shí)例代碼
本篇文章主要介紹了angularjs2中父子組件的數(shù)據(jù)傳遞的實(shí)例代碼,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-07-07
AngularJS基礎(chǔ) ng-click 指令示例代碼
本文介紹AngularJS ng-click 指令,這里整理了ng-click指令的基礎(chǔ)知識并且附有簡單示例代碼和實(shí)現(xiàn)效果圖,有需要的小伙伴參考下2016-08-08
AngularJS中的API(接口)簡單實(shí)現(xiàn)
本文主要介紹AngularJS API(接口),這里對AngularJS API的知識做了詳細(xì)講解,并附簡單代碼實(shí)例,有需要的小伙伴可以參考下2016-07-07
深入學(xué)習(xí)AngularJS中數(shù)據(jù)的雙向綁定機(jī)制
這篇文章主要介紹了AngularJS中數(shù)據(jù)的雙向綁定機(jī)制,雙向綁定使得HTML中呈現(xiàn)的view與AngularJS中的數(shù)據(jù)一致,是Angular的重要特性之一,需要的朋友可以參考下2016-03-03
AngularJS雙向數(shù)據(jù)綁定原理之$watch、$apply和$digest的應(yīng)用
這篇文章主要介紹了AngularJS雙向數(shù)據(jù)綁定原理之$watch、$apply和$digest的應(yīng)用,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-01-01
Angular+ionic實(shí)現(xiàn)折疊展開效果的示例代碼
這篇文章主要介紹了Angular+ionic實(shí)現(xiàn)折疊展開效果,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-07-07

