在Asp.net Mvc 3中使用swfupload

來源:互聯網
上載者:User

 

一、無法在iis下顯示上傳按鈕的問題

注意在js中,路徑要絕對按照下面的方式書寫:

flash_url: '@Url.Content("~/Common/SwfUpload/swfupload.swf")',

button_image_url: '@Url.Content("~/Common/SwfUpload/TestImageNoText_65x29.png")',

 

如果寫成

button_image_url: '/Common/SwfUpload/TestImageNoText_65x29.png")',

則在iisexpress中調試能夠通過,但在iis中啟動並執行時候會出現錯誤,原因是前者會將虛擬路徑加上,後者不會。

最終造成的問題是:1、上傳按鈕不會顯示;2、當然也無法點擊開啟檔案對話方塊,因為swf檔案也無法載入。

 

二、上傳路徑的寫法:

假設我們使用UploadController的Upload方法,來處理上傳,那麼:

1、參數要一致,當然,我們可以不要設定參數,只用Request.Files來獲得傳來的檔案

2、路徑和flash_url一致,也用url.Content,當然也可用Url.Action

 

三、後台代碼的書寫:

對於1個檔案,對於多個檔案

 

四、檔案大小限制

 

五、file和swfupload的區別:

原理上說,swfupload在本地讀取檔案,我們通過js能夠擷取本地的進度。因此,開始傳了多少,在尚未到達伺服器的時候我們就知道。

file控制項則是整個檔案傳遞到伺服器後我們才能知道進度,當然,有一些特別的服務端的方法,可以解析請求內容,得到“到達的數量”

 

因此,swfupload通過js輪詢本地的進度。

當然,如果服務端處理耗時較長的話,也可以由本地js,輪詢服務端某個進度值。

所以,可以統一進度條的樣式,服務端處理通常包括:1、將到達的請求(已經包含整個檔案)儲存到磁碟上;2、如果是匯入操作,再將其加入資料庫。

這是對excel之類的情形,如果以某種檔案形式上傳匯入到資料庫,則無需儲存檔案的操作,僅針對stream處理即可。

 

六、考慮用戶端禁用java或未安裝Flash的問題

 

七、封裝上傳功能:

   實際上,對於單檔案上傳,理想的方法是提供一個按鈕,選擇檔案後,在按鈕後方或者下方,出現檔案名稱,正在上傳和一個進度條。當然,能夠顯示上傳耗時、剩餘多少時間、上傳速度最好。

上傳結束後,保持這些資訊,同時顯示“上傳成功”,下次選擇檔案的時候,重複此動作。

   如果用戶端禁用js,則改用file控制項,不顯示進度---此時也無法通過js做什麼。

   如果用戶端可用js,但未安裝flash,這時可以用一個滾動的gif圖形,粗略的表示上傳進行中。

 

  對於多檔案,方式差不多。大體上,swfupload官網的Demo包括file隊列、速度等js檔案,改改就能用。

 

   對於Asp.net mvc,實際上可以有兩種封裝方法:

1、封裝為htmlhelper

2、全域提供唯一的一個上傳Action,各處調用。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.