2009年1月11日 星期日

利用Silverlight實現網頁檔案上傳進度

  技術的變化總是讓人目不暇給,有時候回頭想也挺令人感慨。

  我記得我一年多前,為了透過AJAX技術實現檔案上傳的進度機制,老實說吃了不少苦頭,當Silverlight 1.0出現的時候, 我針對這個功能也嘗試做了一個範例,但是礙於JavaScript在用戶端龐雜的程式碼,因此這個範例始終沒有跟大家見面(所以在Sivlerlight 1.0的書籍中當然您也沒有看到),時至2009年,最近終於有了一點時間,花了一兩天做了一個Silverlight 2.0的檔案上傳類別, 透過 Silverlight 2.0實作這個功能確實是比起用AJAX輕鬆了不少,例如透過Silverlight 2.0的功能我可以輕鬆的調用Web Service, 我可以相當容易的針對用戶端的檔案作存取, 不需要礙於Browser對於用戶端檔案沒有權限而費盡心思的處理安全性議題,檔案的上傳過程中難免也會有timeout或是其他的Exception, 透過Sivlerlight 2.0撰寫的用戶端程式碼, 要處理這些Exception容易很多, 也因此, 在Silverlight 2.0推出之時(嚴格說起來是1.1那時候), 我就在想, 或許對於大多數的ASP.NET開發人員來說, 檔案上傳進度才是我要透過Silverlight迫切實現的一些關鍵技術, 其他諸如很炫的UI? 2D或是3D動畫效果, 很抱歉, 老實說其實我對這些沒多大興趣...這些屬於加分用的功能, 可以讓我的產品賣相好一點, 但不太可能憑這些功能幹掉對手, 且這部分交給Designer來完成就好...(請原諒我的開發人員本位主義和要不得的程序員心態...^_^)

  so, 或許你有興趣試試看底下這個prototype, 我會在快要寫完的Silverlight 2.0-3.0書籍中介紹(如果時間來的及, 或許我會先在下一期的RunPC介紹相關的程式碼開發方式), 另外由於Hosting的限制, 請不要上傳超過1.5M大小的檔案, 不然很容易把我用很便宜的價格租來的Web Server拖垮, 傳一兩個檔案玩玩就好, 這不是完整版, 所以也可能有一些bugs, 如果有任何問題, 請讓我知道。另外, 請不要上傳有任何安全性疑慮或爭議的檔案, 我無法保證你上傳上來的檔案的安全, 請留意。

[Upload File Progress with Silverlight 2.0]
補充說明一下,建議您上傳.gif, .jpg, .png圖檔或.rar壓縮檔,否則有一些檔案就算你上傳成功,由於Hosting的關係,你可能也會下載失敗...檔案無法驗證上傳結果...