SWFUpload檔案上傳
官方網址:
中文的說明文件:http://www.v-sky.com/doc/swfupload/v2.1.0/Documentation.html (Version2.1.0)
SWFupload是利用flash上傳檔案的,支援多檔案上傳,SWFupload的多檔案上傳是傳送多個Http請求,每一個請求傳送一個檔案,每一個檔案可以攜帶自己的file parameters,在這個專案中這個file parameters可以為重新命名檔名。
在中文文件中描述的很清楚,檔案在被選擇進佇列到上傳成功,檔案狀態的變遷。在每一個過程中應該處理什麼,會觸發那個函式,文件中描述比較清楚。
我主要描述一下在專案中遇到的問題:
1、 flash上傳檔案的Cookie bug。
a) 先說一下我們的專案結構吧,所有的受保護請求都被一個攔截器(Inspector)攔截,在攔截器中判斷使用者的合法性。
b) 在非IE核心的瀏覽器中傳送請求時,flash將非永續性的cookie(這個不知道怎麼理解,可能是每一個請求所帶的cookie吧,不是透過server顯式寫到客戶端的。)全部過濾掉,不給server傳送,當然包括JSESSIONID,這樣導致在Firefox等非IE核心的瀏覽器下無法上傳檔案。
c) 解決辦法,將失去的這個JSESSIONID作為引數提交給server,重新加入對JSESSIONID的支援程式碼如下:
if(!jQuery.browser.msie) { var start =
url.indexOf('doUpload.do') + 11; url = url.substring(0, start) + ';jsessionid=' +Upload.getCookie('JSESSIONID') +
url.substr(start); } |
Upload.getCookie
= function(key) { var acookie =
document.cookie.split("; "); for(var i = 0; i <
acookie.length; i++) { var arr =
acookie[i].split("="); if(key == arr[0]
&& arr.length > 1) { return
unescape(arr[1]); } } return ''; } |
d) 這樣既在請求的URL中加入JESSIONID,這裡注意不能使用SWFupload的addPostParam方法。
2、 第二個大問題就是flash在上傳的過程,將所有的檔案型別全部格式化為一種:application/octet-stream,這樣在解析過程中取不到實際的檔案型別,這個問題目前還不知道如何解決,不過有一個比較笨的辦法就是,把常用的那些檔案的副檔名和 MIME TYPE做一個對映,根據客戶端傳上來的副檔名,獲得MIME TYPE。但是這個方法存在很多缺陷,例如,客戶端把txt副檔名手動更改為exe,這樣,獲得的型別其實是不準確的。
其他的在處理上傳的過程中還是比較順利的。因為專案最終還沒有完成,暫時就寫這麼多吧!
[@more@]來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/200919/viewspace-1029245/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- java struts2結合swfupload實現上傳檔案的demo教程Java
- iis 下 swfupload 上傳大檔案 卡頓 404 錯誤 等問題處理方法
- php檔案上傳之多檔案上傳PHP
- swfupload的ASP上傳示例程式碼
- 單個檔案上傳和批量檔案上傳
- 檔案上傳
- SpringMVC 單檔案上傳與多檔案上傳SpringMVC
- Java大檔案上傳、分片上傳、多檔案上傳、斷點續傳、上傳檔案minio、分片上傳minio等解決方案Java斷點
- 檔案上傳之三基於flash的檔案上傳
- 前端大檔案上傳/分片上傳前端
- Flask——檔案上傳Flask
- PHP上傳檔案PHP
- JavaScript 檔案上傳JavaScript
- Git上傳檔案Git
- YII檔案上傳
- 檔案上傳概述
- beego上傳檔案Go
- 上傳檔案流程
- 上傳EXCLE檔案
- PHP 檔案上傳PHP
- 檔案上傳漏洞
- MVC檔案上傳 - 使用Request.Files上傳多個檔案MVC
- .NET Core 如何上傳檔案及處理大檔案上傳
- Django檔案上傳 -- 適用於單一小檔案上傳Django
- 上傳檔案的陷阱
- HTTP檔案上傳原理HTTP
- 上傳檔案專題
- PHP 分片上傳檔案PHP
- Java Web 檔案上傳JavaWeb
- WEB漏洞——檔案上傳Web
- Aliyun Oss 上傳檔案
- 使用fileinput上傳檔案
- PHP ftp上傳檔案PHPFTP
- 上傳檔案至GitHubGithub
- 檔案上傳測試
- Linux上傳檔案Linux
- laravel 多檔案上傳Laravel
- ajaxfileupload 檔案上傳