OCUpload (One Click Upload)譯成中文就是一鍵上傳的意思。它是JQuery的一個外掛。
對於傳統的檔案上傳,只能通過form表單,將enctype設定為multipart/form-data,選中檔案後還需在頁面點選submit提交按鈕,提交表單,才能在後臺接收上傳的檔案並進行相關欄位解析,上傳成功後,頁面還要重新整理,這樣並不符合我們的某些實際需求。如果要用ajax進行檔案上傳達到不重新整理頁面的效果,這樣也是不對的,因為ajax不支援檔案上傳,這是因為response原因,一般請求瀏覽器是會處理伺服器輸出的response,例如生成png、檔案下載等,然而ajax請求只是個“字元型”的請求,即請求的內容是以文字型別存放的。檔案的下載是以二進位制形式進行的,雖然可以讀取到返回的response,但只是讀取而已,是無法執行的,說白點就是js無法呼叫到瀏覽器的下載處理機制和程式。那這時想要達到上傳頁面並不重新整理的效果怎麼把呢???我們可以這麼做。
- <iframe name="text" style="display:none"></iframe>
- <form target="text" action="xxx" method="post" enctype="multipart/form-data">
- <input type="file" name="myFile"/>
- <input type="submit" value="upload"/>
- </form>
通過這種方式上傳檔案,重新整理的頁面就變成了這個iframe,而且設定的隱藏我們看不到,而我們自己所用的頁面就不會重新整理,通過這種方式達到了一個不重新整理頁面上傳檔案的效果。
而OCUpload就是採用了這種方式,只是進行了封裝我們看不到。接下來就講一講怎麼使用UCOpload。
首先引入必要的js檔案,因為是jquery的外掛所以在引入jquery.ocupload-1.1.2.js之前我們還要引入jquery的js檔案。
- <script type="text/javascript" src="${pageContext.request.contextPath }/js/jquery-1.8.3.js"></script>
- <script type="text/javascript" src="${pageContext.request.contextPath }/js/jquery.ocupload-1.1.2.js"></script>
第二步在頁面中任意提供一個元素
- <input id="myButton" type="button" value="上傳"/>
第三部呼叫外掛提供的upload方法,動態修改HTML頁面元素。
- <script type="text/javascript">
- $(function () {
- $("#myButton").upload({
- action: 'xxx', //你所要向伺服器請求的的路徑,必填
- name: 'myFile', //上傳元件的name的值,不寫預設是file
enctype: 'multipart/form-data', //mime型別,使用預設就好- params: {}, //請求時額外傳遞的引數,預設是為空的
- onSelect: function (self, element) { //當用戶選擇了一個檔案後觸發事件
- this.autoSubmit = false; //當選擇了檔案後,關閉自動提交
- },
- onSubmit: function (self, element){}, //提交表單之前觸發事件
autoSubmit: true, //是否自動提交,即當選擇了檔案,自動關閉了選擇視窗後,
是否自動提交請求。- onComplete: function (data, self, element){} //提交表單完成後觸發的事件
- });
- });
- </script>
這樣就完成了對OCUpload的使用。