ASP中巧用Response存取檔案

來源:互聯網
上載者:User
response   ---- 我在用ASP為某單位製作網頁時遇到這樣一個問題,單位以前的MIS系統中將一些Word檔案以位元組流的形式儲存在資料庫中,現在使用者要求我用ASP將這些Word檔案資料從資料庫中取出並在網頁中顯示出來。開始我自然地想到在伺服器上建立臨時檔案、然後在網頁中增加一個指向這個臨時檔案的連結,但這個方法將大大增加伺服器的負擔不說,而且在服務上如何保證特定用戶端所使用的臨時檔案不被其它用戶端使用的檔案覆蓋,如何在檔案傳送給使用者後將檔案刪除,這些問題在實際都難很好解決。那麼有沒有更好的辦法呢?
  ---- 為此我仔細查看了一下ASP的參考書,發現Response對象有一個叫contenttype的屬性,它定義伺服器發送給用戶端內容的MIME類型。MIME全稱Multipurpose Internet Mail Extensions,即多功能Internet郵件擴充。我們知道,在網頁編程中我們有時將超連結指向一個Word或Excel檔案,當使用者點擊這個連結時瀏覽器會自動調用對應方法將這個檔案開啟。之所以能做到這點就是因為使用者機器上安裝office後會在瀏覽器中註冊對應的MIME資源類型。比如說word檔案的MIME類型是Application/msword(前者是MIME類型,後者是MIME子類),Excel檔案的MIME資源類型是Application/msexcel。事實上,凡是瀏覽器能處理的所有資源都有對應的MIME資源類型,比如說html檔案的MIME類型是Text/html,JPG檔案的MIME類型是Image/JPG。在與伺服器的互動中,瀏覽器就是根據所接受資料的MIME類型來判斷要進行什麼樣的處理,對html、JPG等檔案瀏覽器直接將其開啟,對Word、Excel等瀏覽器自身不能開啟的檔案則調用相應方法開啟。對沒有標記MIME類型的檔案,瀏覽器則根據其副檔名和檔案內容猜測其類型。如果瀏覽器無法猜出,則將它作為application/octet-stream。要瞭解各種檔案的MIME類型,請在win98 我的電腦->查看->檔案夾選項->檔案類型 中查看。
  ---- 於是我靈機一動,想到在ASP中可以先將WORD資料以位元組流方式取出,接著將其conntenttype屬性標記為Application/msword,再將它發送給客戶機,客戶機收到這個資源後,根據其MIME類型,會自動調用客戶機上的Word(當然,前提是客戶機上裝了Word,否則會將其作為一個不能識別的資源,提示使用者儲存起來,而不是開啟它)將它開啟。經實驗效果很好,方法簡單且速度很快,而且在IE5中瀏覽器使用內嵌方式(類似於OLE方式)開啟,效果更佳。以下是程式內容。
  ---- 假設表名tab_word,表中有兩個欄位,一個是整型,名id,用作Word資料的唯一標識,另一個Blob型,名worddata,裡面存放Word資料。現在要在頁面上顯示id等於1的Word檔案內容, ASP程式如下:
< %
' conn - 已建立的資料庫連接
' rs -- 結果集
rs = conn.execute("select
worddata from tab_word where id = 1")
response.contenttype = "Application/msword"
response.writebinary(rs("worddata"))
'注意將結果集中的資料直接用writebinary發送出去,不要用變數
'接收這個資料,否則系統會報錯
% >
  ---- 用類似的方法,還可以處理Excel、Bmp等許多類型的資料。此程式在以下系統中測試通過:伺服器:NT + IIS + SqlServer用戶端:Win98 + IE5 或 Netscape4.x

相關文章

Cloud Intelligence Leading the Digital Future

Alibaba Cloud ACtivate Online Conference, Nov. 20th & 21st, 2019 (UTC+08)

Register Now >

Starter Package

SSD Cloud server and data transfer for only $2.50 a month

Get Started >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

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

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