相關(guān)資訊
- 《戰(zhàn)國(guó)無(wú)雙4-2》怎么換服裝?戰(zhàn)國(guó)無(wú)
- 關(guān)于責(zé)任的名言警句大全
- 《戰(zhàn)國(guó)無(wú)雙4-2》PC版如何聯(lián)機(jī)? 戰(zhàn)
- 戰(zhàn)國(guó)無(wú)雙4-2技能覺(jué)醒牛逼嗎 全新
- 《戰(zhàn)國(guó)無(wú)雙4-2》手柄無(wú)效怎么解決
- 戰(zhàn)國(guó)無(wú)雙4-2如何設(shè)置語(yǔ)言 戰(zhàn)國(guó)無(wú)雙
- 戰(zhàn)國(guó)無(wú)雙4-2怎么樣跳過(guò)進(jìn)入開(kāi)場(chǎng)動(dòng)畫(huà)
- 什么是應(yīng)屆生畢業(yè)生
- 應(yīng)屆生簡(jiǎn)歷自我評(píng)價(jià)
- 應(yīng)屆生簡(jiǎn)歷怎么寫(xiě)
本類(lèi)常用軟件
-
福建農(nóng)村信用社手機(jī)銀行客戶(hù)端下載下載量:584204
-
Windows優(yōu)化大師下載量:416896
-
90美女秀(視頻聊天軟件)下載量:366961
-
廣西農(nóng)村信用社手機(jī)銀行客戶(hù)端下載下載量:365699
-
快播手機(jī)版下載量:325855
這篇文章是一個(gè)小經(jīng)驗(yàn)分享,關(guān)于在ASP巧用Response存取文件的實(shí)例,希望對(duì)大家有所幫助。
我在用ASP為某單位制作網(wǎng)頁(yè)時(shí)遇到這樣一個(gè)問(wèn)題,單位以前的MIS系統(tǒng)中將一些Word文件以字節(jié)流的形式保存在數(shù)據(jù)庫(kù)中,現(xiàn)在用戶(hù)要求我用ASP將這些Word文件數(shù)據(jù)從數(shù)據(jù)庫(kù)中取出并在網(wǎng)頁(yè)中顯示出來(lái)。開(kāi)始我自然地想到在服務(wù)器上創(chuàng)建臨時(shí)文件、然后在網(wǎng)頁(yè)中增加一個(gè)指向這個(gè)臨時(shí)文件的鏈接,但這個(gè)方法將大大增加服務(wù)器的負(fù)擔(dān)不說(shuō),而且在服務(wù)上如何保證特定客戶(hù)端所使用的臨時(shí)文件不被其它客戶(hù)端使用的文件覆蓋,如何在文件傳送給用戶(hù)后將文件刪除,這些問(wèn)題在實(shí)際都難很好解決。那么有沒(méi)有更好的辦法呢?
為此我仔細(xì)查看了一下ASP的參考書(shū),發(fā)現(xiàn)Response對(duì)象有一個(gè)叫contenttype的屬性,它定義服務(wù)器發(fā)送給客戶(hù)端內(nèi)容的MIME類(lèi)型。MIME全稱(chēng)Multipurpose Internet Mail Extensions,即多功能Internet郵件擴(kuò)展。我們知道,在網(wǎng)頁(yè)編程中我們有時(shí)將超鏈接指向一個(gè)Word或Excel文件,當(dāng)用戶(hù)點(diǎn)擊這個(gè)鏈接時(shí)瀏覽器會(huì)自動(dòng)調(diào)用對(duì)應(yīng)方法將這個(gè)文件打開(kāi)。之所以能做到這點(diǎn)就是因?yàn)橛脩?hù)機(jī)器上安裝office后會(huì)在瀏覽器中注冊(cè)對(duì)應(yīng)的MIME資源類(lèi)型。比如說(shuō)word文件的MIME類(lèi)型是Application/msword(前者是MIME類(lèi)型,后者是MIME子類(lèi)),Excel文件的MIME資源類(lèi)型是Application/msexcel。事實(shí)上,凡是瀏覽器能處理的所有資源都有對(duì)應(yīng)的MIME資源類(lèi)型,比如說(shuō)html文件的MIME類(lèi)型是Text/html,JPG文件的MIME類(lèi)型是Image/JPG。在與服務(wù)器的交互中,瀏覽器就是根據(jù)所接受數(shù)據(jù)的MIME類(lèi)型來(lái)判斷要進(jìn)行什么樣的處理,對(duì)html、JPG等文件瀏覽器直接將其打開(kāi),對(duì)Word、Excel等瀏覽器自身不能打開(kāi)的文件則調(diào)用相應(yīng)方法打開(kāi)。對(duì)沒(méi)有標(biāo)記MIME類(lèi)型的文件,瀏覽器則根據(jù)其擴(kuò)展名和文件內(nèi)容猜測(cè)其類(lèi)型。如果瀏覽器無(wú)法猜出,則將它作為application/octet-stream。要了解各種文件的MIME類(lèi)型,請(qǐng)?jiān)趙in98 我的電腦->查看->文件夾選項(xiàng)->文件類(lèi)型 中查看。
于是我靈機(jī)一動(dòng),想到在ASP中可以先將WORD數(shù)據(jù)以字節(jié)流方式取出,接著將其conntenttype屬性標(biāo)記為Application/msword,再將它發(fā)送給客戶(hù)機(jī),客戶(hù)機(jī)收到這個(gè)資源后,根據(jù)其MIME類(lèi)型,會(huì)自動(dòng)調(diào)用客戶(hù)機(jī)上的Word(當(dāng)然,前提是客戶(hù)機(jī)上裝了Word,否則會(huì)將其作為一個(gè)不能識(shí)別的資源,提示用戶(hù)保存起來(lái),而不是打開(kāi)它)將它打開(kāi)。經(jīng)試驗(yàn)效果很好,方法簡(jiǎn)單且速度很快,而且在IE5中瀏覽器使用內(nèi)嵌方式(類(lèi)似于OLE方式)打開(kāi),效果更佳。以下是程序內(nèi)容。
假設(shè)表名tab_word,表中有兩個(gè)字段,一個(gè)是整型,名id,用作Word數(shù)據(jù)的唯一標(biāo)識(shí),另一個(gè)Blob型,名worddata,里面存放Word數(shù)據(jù)。現(xiàn)在要在頁(yè)面上顯示id等于1的Word文件內(nèi)容, ASP程序如下:
< %
' conn - 已創(chuàng)建的數(shù)據(jù)庫(kù)連接
' rs -- 結(jié)果集
rs = conn.execute("select
worddata from tab_word where id = 1")
response.contenttype = "Application/msword"
response.writebinary(rs("worddata"))
'注意將結(jié)果集中的數(shù)據(jù)直接用writebinary發(fā)送出去,不要用變量
'接收這個(gè)數(shù)據(jù),否則系統(tǒng)會(huì)報(bào)錯(cuò)
% >
用類(lèi)似的方法,還可以處理Excel、Bmp等許多類(lèi)型的數(shù)據(jù)。此程序在以下系統(tǒng)中測(cè)試通過(guò):服務(wù)器:NT + IIS + SqlServer客戶(hù)端:Win98 + IE5 或 Netscape4.x