AngularJS 檔案上傳 的功能你了解的多少?幾分鐘就讓你了解angularjs的檔案上傳
這篇文章主要的講述了angularjs的檔案上傳功能,大家又不懂都可以來看,希望能幫助到大家。下面就讓我們一起來看這篇文章吧
問題描述附件上傳
檢定結果以附件形式上傳。
這裡先不考慮api
。
實現的任務就是,點選選擇文件,選擇之後可以清楚掉該文件。
插件介紹
用到了專案映入過的一個插件,angular-file-upload。
外掛很簡單,就是一個指令,我們在它提供給我們的指令中聲明一個uploader
對象,這個對象表示在不同的時間下要執行什麼操作,另一種觀察者模式。
功能實作
使用指令
官網給了該指令的很多種用法,這裡選擇最簡單的,Single
,單一檔案上傳。
<input>
一個file
類型的input
,使用nv-file-select
指令,傳給該指令一個uploader
物件作為參數。
很簡單的邏輯,新建一個FileUploader
的對象,然後重寫它的onAfterAddingFile
方法,就是在文件添加完成之後,也就是點擊選擇文件,選取文件,點擊完成之後執行的一個方法。
此方法中我們直接對檔案進行上傳操作。
// 新建文件上传实例 self.uploader = new FileUploader(); // 重写文件添加后的方法 self.uploader.onAfterAddingFile = function(fileItem) { // 打印日志 if (config.debug) { console.info('onAfterAddingFile', fileItem); } // 上传文件 self.upload(fileItem); }; // 传给视图 $scope.uploader = self.uploader;
如果將檔案上傳封裝成指令,以上程式碼應該方法指令的controller
方法中執行! ! !
關於指令中的compile
、controller
、link
的執行詳解,請參考正確地使用Angular Directive 中的compile ,controller 與link。
原因分析
可能是nv-file-select
指令在實作時在link
函數中進行各種事件的綁定,綁定定時就需要我們的uploader
物件。
而如果我們將其放在了link
函數裡,該指令的link
函數是晚於nv-file-select
的link
函數執行的,所以無效。
upload
// 上传文件 self.upload = function(data) { // 上传文件 AttachmentService.uploadFile(data._file) .then(function success(response) { // 将上传成功的附件绑定再ngModel中 $scope.ngModel = response.data; // 显示上传按钮 self.showClear(); }, function error() { // 提示用户上传失败 sweetAlert.swal({ title: "对不起", text: "上传的附件不能大于1M,请确认附件是否大于1M" }); }); };
清除
使用者上傳錯了檔案怎麼辦呢?新增一個清空按鈕,如果上傳檔案之後就顯示。
// 清空选中文件 self.clear = function() { self.deleteFile(scope.ngModel.id); }; // 删除附件 self.deleteFile = function(id) { AttachmentService.deleteFile(id, function success() { // 将附件赋为空对象 scope.ngModel = undefined; // 隐藏清空按钮 self.hideClear(); }); }; scope.clear = self.clear;
但這裡會有一個問題,這裡只是刪除了伺服器上的附件,而檔案的選取效果還是在的,這裡還是顯示選取的檔案名稱的。
解決方案就是用一個form
把它套起來,將button
的型別設為reset
,點擊按鈕時,就會清空input
中的內容了。
設定為reset
之後就會出現新的問題,因為是在一個form
表單裡套的這個指令,所以reset
,將其他的也都清空了。
ng-form
拿ng-form
解決了問題。
這是ng-form
指令的官方解釋:
HTML does not allow nesting of form elements. It is useful to nest forms, for example if the validity of a sub-group of controls needs to be determined.
HTML
不允許巢狀form
元素,ng-form
被用來巢狀form
,如果一個子的form
群組需要被驗證。 (想看更多就到PHP中文網angularjs學習手冊中學習)
但是ng-form
並沒有實作form
的功能,ng-submit
就不能使用,想想這樣設計也是合理的,如果ng-form
也能submit
,嵌套form
,一個submit
的button
,提交誰?
優化
這裡只是最簡單的一種應用場景,如果需要上傳幾十M
的一個大檔案呢?
如果是學習過電腦網路的小夥伴,看到這個實作是不是覺得很熟悉?這不就是路由器當發現另一個網路無法一次承載這麼多的數據,然後做的事嗎?原理電腦網絡,還是有點用的。
就像上次設計yunzhiTrueOrFalse
過濾器時,我明白了資料結構的本質。資料結構其實就是資料「結構」。
我們說Map
是一種資料結構,但是沒有HashMap
我們能不能完成任務呢?
也能,兩個數組,一個存號key
,一個存號value
,for
循環唄。然後Java
社群發現這種的應用場景太多,用起來太麻煩,就在JDK
中實作了這樣的一種資料結構HashMap
。 (這是我編的故事啊!)
抽象過後,一切更方便,如果某一天你發現已有的資料結構不能滿足你的場景需求,翻開書本,自己設計一個。
這篇文章到這就結束了,想看更多推薦到PHP中文網angularjs參考手冊中學習。
以上是AngularJS 檔案上傳 的功能你了解的多少?幾分鐘就讓你了解angularjs的檔案上傳的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

熱門話題

實現Workerman文件中的文件上傳與下載,需要具體程式碼範例引言:Workerman是一款高效能的PHP非同步網路通訊框架,具備簡潔、高效、易用等特點。在實際開發中,文件上傳和下載是常見的功能需求,本文將介紹如何使用Workerman框架實現文件的上傳和下載,並給出具體的程式碼範例。一、檔案上傳:檔案上傳是指將本機上的檔案傳輸至伺服器端的操作。下面是使用

如何利用Laravel實現文件上傳和下載功能Laravel是一個流行的PHPWeb框架,提供了豐富的功能和工具,使得開發Web應用程式更加簡單和有效率。其中一個常用的功能就是檔案上傳和下載。本文將介紹如何利用Laravel實作檔案上傳和下載功能,並提供具體的程式碼範例。文件上傳文件上傳是指將本機的文件上傳到伺服器上儲存。在Laravel中,我們可以使用檔案上傳

如何使用gRPC實作檔案上傳?建立配套服務定義,包括請求和回應訊息。在客戶端,開啟要上傳的檔案並將其分成區塊,然後透過gRPC串流傳輸到服務端。在服務端,接收文件區塊並將其儲存到文件中。服務端在文件上傳完成後發送回應,指示上傳是否成功。

如何解決Java檔案上傳異常(FileUploadException)上傳檔案在網路開發中經常會遇到的一個問題是FileUploadException(檔案上傳例外)。它可能會因各種原因而出現,例如檔案大小超過限制、檔案格式不符或伺服器配置不正確等。本文將介紹一些解決這些問題的方法,並提供相應的程式碼範例。限制上傳檔案的大小在大多數場景下,限製檔案大小

如何用PHP實作FTP檔案上傳進度條一、背景介紹在網站開發中,檔案上傳是常見的功能。而對於大檔案的上傳,為了提高使用者體驗,我們常常需要向使用者顯示一個上傳進度條,讓使用者知道檔案上傳的進程。本文將介紹如何使用PHP實作FTP檔案上傳進度條的功能。二、FTP檔案上傳進度條的實現方法基本思路FTP檔案上傳的進度條實現,通常是透過計算上傳的檔案大小和已上傳檔案大小

PHP檔案上傳指南:如何使用move_uploaded_file函數處理上傳檔案在開發網頁應用程式中,檔案上傳是常見的需求。 PHP提供了一個方便的函數move_uploaded_file(),用來處理上傳的檔案。本文將向您介紹如何使用這個函數來實作檔案上傳功能。一、準備工作在開始之前,請確保您的PHP環境已經配置了檔案上傳的參數。您可以透過打開php.in

Laravel中的檔案上傳與處理:管理使用者上傳的檔案引言:在現代Web應用程式中,檔案上傳是很常見的功能需求。在Laravel框架中,文件上傳和處理變得非常簡單和有效率。本文將介紹如何在Laravel中管理使用者上傳的文件,包括文件上傳的驗證、儲存、處理和顯示。一、文件上傳文件上傳是指將文件從客戶端上傳到伺服器端。在Laravel中,檔案上傳非常容易處理。首先,

答案:是,Golang提供的函數可以簡化檔案上傳處理。詳情:MultipartFile類型提供對文件元資料和內容的存取。 FormFile函數從表單請求中取得特定檔案。 ParseForm和ParseMultipartForm函數用於解析表單資料和多部分錶單資料。使用這些函數簡化了文件處理流程,讓開發者專注於業務邏輯。
