利用ashx傳送檔案下載

程式技術/.NET 2009/12/14 17:32
views: 45101 times
在 asp.net 中, 若要實現檔案下載處理的方式(並且要進行 url 隱藏及下載管理), 可以利用 ashx (generic handler) 來進行, 方式很單純, 主要是在 header 上下一些手腳, 方式如下:



使用的方式若是處理檔案下載, 可以利用 application/octet-stream 這個 ContentType header , 並配合 Content-Disposition header 中, 利用 attachment; filename=xxxx 的方式來將檔案名稱指定給客戶端, 參考資料: http://support.microsoft.com/?scid=kb%3Ben-us%3B260519

而之後再利用 TransmitFile() 方法, 將在 server 上的檔案讀取出來並傳送到客戶端, 至於使用 TransmitFile 方法和其他方法的比較如這篇文章所示: http://blog.miniasp.com/post/2008/03/Caution-about-ASPNET-Response-a-Large-File.aspx

一般來說, 若是大檔案, 可以直接利用 TransmitFile 的方式來進行, 但不是太大型檔案, 有續傳需求時, 則不適用, 但效率上是以 TransmitFile 的效率最佳(因為不用先整個讀到記憶體中).

其他人的比較資料:
[ASP.NET] 無網址的檔案下載 - 進階研究 http://gogo1119.pixnet.net/blog/post/27407222

[2010/2/12 14:48]
相關文章: http://edu.uuu.com.tw/data_article/article/100212tips.htm

top

微軟將於Visual Studio整合jQuery進來了!!

程式技術/.NET 2008/10/02 02:15
views: 55354 times
最近的消息, 微軟將於Visual Studio嵌入jQuery這組Open Source的函數庫了. 可以參考下面文章連結: 微軟Visual Studio將嵌入開放源碼jQuery程式庫

jQuery, 有在寫 Web application的工程師應該不陌生, 好用又洗鍊的語法, 方便容易使用的方式, 整個和 Web UI 可以做相當方便結合的一組 library 最近因為微軟的這個消息, 對於之前投資學習 jQuery 的 developer 們來說, 真是個不錯的好消息.

當然, 無論是否於 Visual Studio 內嵌入 jQuery, 大家也都可以直接於 web application 上使用這組 library 沒有什麼大問題, 不過相信對於整合度及方便性來說, 能夠和 Visual Studio 整合當然是再好不過了.

不過和原來的 AJAX 那組 framework 要怎麼整合, 如何取捨, 或是同時並存也是一個有趣的課題. (據消息來說應該是會改用 jQuery)相信這個消息對於已經同時正在使用 asp.net 開發及 jQuery library 的 developer 來說真是個好消息呢.

相關文章及連結:
google blog search: link
微軟將在 ASP.NET 相關產品中全面支援 jQuery
jQuery进入微软和Nokia的解决方案
微軟也搶著支援jQuery?
jQuery從此有名有分,我出運了!

top

撰寫big5的asp.net程式

程式技術/.NET 2008/07/22 17:38
views: 66071 times
由於預設的 asp.net 程式開發是使用 utf-8 的編碼, 所以若是要開發 big5 的 asp.net 程式, 需要做一些調整.

可以參考這篇有關 globalization 項目設定的網頁: http://msdn.microsoft.com/zh-tw/library/hy4kkhe0(VS.80).aspx

其實很單純的將 web.config 中的 system.web 內的 globalization 的屬性: requestEncoding 及 responseEncoding 做些調整即可. 由於預設的是:
<globalization requestEncoding="utf-8"
responseEncoding="utf-8"
fileEncoding=""
culture=""
uiCulture=""
enableClientBasedCulture="false"
responseHeaderEncoding="utf-8"
resourceProviderFactoryType=""
enableBestFitResponseEncoding="false" />
所以會是 utf-8 的編碼, 若是要開發 big5 的 asp.net 程式, 僅需要做這裡的調整即可. 程式碼本身並不需要更動, 就可以依照這個 web.config 做指定輸出了. 若是字元是 utf-8 的, 但指定用 big5 輸出時, 仍然會有 ?? 這種狀況發生, 也是要注意的地方, 不過一般的狀況下(字元相容的字)是沒有問題的.

但是頁面上的 meta tag 則必須 user 自行手動修改, 或利用小程式輔助來進行調整,
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

因為 web.config 是在 http header 就已經輸出指定的 encoding 囉, 而不是透過 meta tag 的 charset 指示的! 以下是 firefox 配合 Live HTTP headers 的 extension 抓出來的內容:

http://localhost:50201/WebSite2/Default.aspx

GET /WebSite2/Default.aspx HTTP/1.1
Host: localhost:50201
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.0; zh-TW; rv:1.8.1.16) Gecko/20080702 Firefox/2.0.0.16
Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
Accept-Language: zh-tw,en-us;q=0.7,en;q=0.3
Accept-Encoding: gzip,deflate
Accept-Charset: Big5,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive

HTTP/1.x 200 OK
Server: ASP.NET Development Server/8.0.0.0
Date: Tue, 22 Jul 2008 09:42:40 GMT
X-AspNet-Version: 2.0.50727
Cache-Control: private
Content-Type: text/html; charset=utf-8
Content-Length: 537
Connection: Close
----------------------------------------------------------

給大家參考看看囉!


top

C#判定BIG5字碼的方式

程式技術/.NET 2007/11/19 21:51
views: 65801 times
繼上一篇 如何在ASP內判定BIG5碼中文字 之後, 再來整理一下在 ASP.NET C# 中判定 BIG5 碼的方式, 其實方式一樣很單純, 不過不需要利用到轉碼的 code page, 只需要利用 System.Text.Encoding 即可順利判讀, 程式碼如下:



利用了 Encoding 的 GetBytes 方式, 取出在 strOne 中的一個字元, 並判定是否為 2個 byte 後, 一樣利用了原來的判定方式, 若落在對應的區間內, 就可以判定為 BIG5 字元集內的字了!
top
TAG ASP.NET, BIG5, c#

在Windows2003 64Bit下執行ASP.NET2.0應用程式

程式技術/.NET 2007/02/03 16:45
views: 57872 times
由於要測試 windows 2003 64bit OS 下的效能, 必須將 ASP.NET 2.0的應用程式部署上去.

但擔心會有相容性的問題, 於是開始找相關的資料. 其實也都沒有找到. 相關的資料僅有在 x64 上的 iis 若要跑 64bit 模式, 就一定得用 asp.net 2.0 才行, 若是 asp.net 1.1 的話, 就僅能跑在 32bit 模式下. 後來直接將 compile 好的 asp.net 2.0 程式, 部署上去在 x64 下的 iis, 結果可以順利執行, 真是方便, 沒有相容性的問題.

應該是 asp.net build 好的 msil code 並沒有含 32/64相依的程式碼, 而要到 runtime 時, 依 runtime 的環境, 來執行 msil code, 所以沒有相容性的問題. 至於為什麼 1.1 要在 32bit 模式下執行, 想必是因為在 x64 os 上, 並沒有 64bit 的 1.1 runtime isapi, 所以只能在 32bit 模式下執行囉.

以上是升級作業系統至 x64 時的一個小插曲, asp.net 2.0 是不會有什麼問題的啦...
top
TAG ASP.NET, iis, x64

ASP.NET Cache物件使用方式及應用

程式技術/.NET 2006/07/27 01:06
views: 70832 times
在使用 asp.net 對於效能有相當幫助的 Cache 功能我特別感興趣, 這篇文章將針對 Cache 的用法做個介紹. (使用 c# 做範例程式語言)

Cache 是在 Page 中取得的一個屬性, 本身是一個在 System.Web.Caching.Cache 型態, 基本上可以想成一個共用的全域變數(很類似之前設在 Application 的變數), 然而, 其功能可以搭配許多相依性參數進行設置, 以期能達到網頁效能的提昇.

我們先來看一下 Cache 的基本使用方式:
(範例1)
   protected void Page_Load(object sender, EventArgs e)
   {
       String strC1 = (String) Cache["c1"];
       if (strC1 == null)        {
           strC1 = DateTime.Now.ToString("yyyy/MM/dd hh:mm:ss");
           Cache.Insert("c1", strC1);
       }
       Response.Write(strC1);
   }

more..


top








【預購】林志玲2012年桌曆 SAPIDO傻多  N速Gigabit 多網型無線寬頻分享器 (GR-1733) SanDisk 16GB Mobile Ultra microSDHC 附轉卡(平輸) (繁中版)Panasonic GF3+14mm F2.5+14-42mm 雙鏡組 人因 Ergotech Tablet  多媒體娛樂機 ★FujiXerox DocuPrint P205b S-LED雷射印表機(粉紅機) (繁中版)Panasonic GF3+14mm F2.5+14-42mm 雙鏡組 飛利浦免油健康氣炸鍋(HD9220) 華擎平台【龍神傳說】四核SSD獨顯電玩機 美國VIZIO 47吋Full HD液晶顯示器+視訊盒 E470VL-TW(M) JSmax Android MID-1023 10.1吋平板電腦(全新升級版) lenovo ideapad G575雙核心15吋筆電【含微軟Windows 7】315301 Lenovo ideapad G570 59-309037 新雙核B950 15.6吋筆電 美國西屋42吋FHD液晶顯示器+視訊盒(LC-42E300A) 【快】Toshiba 新禾公司貨 V5 1TB 黑靚潮行動硬碟 OCZ Solid 3 120GB 2.5吋 SATA3 固態硬碟 SanDisk 16GB microSDHC (Class 4) 記憶卡 HP LaserJet Pro CP1025nw 無線迷你彩色雷射印表機 D-Link DHP-501AV 500Mbps電力線網路橋接器(雙包裝) IBT-1073VOD 雲端劇院 Brinno Garden Watch Cam 生活記錄器 SAPIDO N速 3.5G易享機 支援BT (GR-1222) 35合1掌上型麻將機2代 三洋 SANYO 日本原廠 18650 全新高效能高容 2600mAh 鋰電池充電組 華擎H61平台【迷你戰將】雙核19型效能液晶電腦


 Waiting...