header中Content-Disposition的作用與使用方法
格式說(shuō)明:
content-disposition = "Content-Disposition" ":" disposition-type *( ";" disposition-parm )
字段說(shuō)明:
Content-Disposition為屬性名
disposition-type是以什么方式下載,如attachment為以附件方式下載
disposition-parm為默認(rèn)保存時(shí)的文件名
服務(wù)端向客戶端游覽器發(fā)送文件時(shí),如果是瀏覽器支持的文件類型,一般會(huì)默認(rèn)使用瀏覽器打開(kāi),比如txt、jpg等,會(huì)直接在瀏覽器中顯示,如果需要提示用戶保存,就要利用Content-Disposition進(jìn)行一下處理,關(guān)鍵在于一定要加上attachment:
Response.AppendHeader("Content-Disposition","attachment;filename=FileName.txt");
備注:這樣瀏覽器會(huì)提示保存還是打開(kāi),即使選擇打開(kāi),也會(huì)使用相關(guān)聯(lián)的程序比如記事本打開(kāi),而不是IE直接打開(kāi)了。
Content-Disposition就是當(dāng)用戶想把請(qǐng)求所得的內(nèi)容存為一個(gè)文件的時(shí)候提供一個(gè)默認(rèn)的文件名。具體的定義如下:
content-disposition = "Content-Disposition" ":"
disposition-type *( ";" disposition-parm )
disposition-type = "attachment" | disp-extension-token
disposition-parm = filename-parm | disp-extension-parm
filename-parm = "filename" "=" quoted-string
disp-extension-token = token
disp-extension-parm = token "=" ( token | quoted-string )
那么由上可知具體的例子:
Content-Disposition: attachment; filename="filename.xls"
當(dāng)然filename參數(shù)可以包含路徑信息,但User-Agnet會(huì)忽略掉這些信息,只會(huì)把路徑信息的最后一部分做為文件名。當(dāng)你在響應(yīng)類型為application/octet- stream情況下使用了這個(gè)頭信息的話,那就意味著你不想直接顯示內(nèi)容,而是彈出一個(gè)"文件下載"的對(duì)話框,接下來(lái)就是由你來(lái)決定"打開(kāi)"還是"保存" 了。
注意事項(xiàng):
1.當(dāng)代碼里面使用Content-Disposition來(lái)確保瀏覽器彈出下載對(duì)話框的時(shí)候。 response.addHeader("Content-Disposition","attachment");一定要確保沒(méi)有做過(guò)關(guān)于禁止瀏覽器緩存的操作。如下:
response.setHeader("Pragma", "No-cache");
response.setHeader("Cache-Control", "No-cache");
response.setDateHeader("Expires", 0);
不然會(huì)發(fā)現(xiàn)下載功能在opera和firefox里面好好的沒(méi)問(wèn)題,在IE下面就是不行
相關(guān)文章
PHP curl 或 file_get_contents 獲取需要授權(quán)頁(yè)面的方法
本篇文章主要介紹了PHP curl 或 file_get_contents獲取需要授權(quán)頁(yè)面的方法,具有很好的參考價(jià)值。下面跟著小編一起來(lái)看下吧2017-05-05
基于PHP實(shí)現(xiàn)郵件實(shí)時(shí)通知功能
隨著企業(yè)化的管理越來(lái)越規(guī)范,各種項(xiàng)目管理系統(tǒng)中,都需要加入到郵件實(shí)時(shí)通知功能,所以在項(xiàng)目中如何整合發(fā)郵件功能,其實(shí)也是很重要的一點(diǎn)。本文為大家介紹了PHP實(shí)現(xiàn)郵件實(shí)時(shí)通知功能的示例代碼,需要的可以參考一下2022-04-04
php數(shù)組函數(shù)序列之each() - 獲取數(shù)組當(dāng)前內(nèi)部指針?biāo)赶蛟氐逆I名和鍵值,并將指針移到下一位
each() 函數(shù)生成一個(gè)由數(shù)組當(dāng)前內(nèi)部指針?biāo)赶虻脑氐逆I名和鍵值組成的數(shù)組,并把內(nèi)部指針向前移動(dòng)。返回的數(shù)組中包括的四個(gè)元素:鍵名為 0,1,key 和 value。單元 0 和 key 包含有數(shù)組單元的鍵名,1 和 value 包含有數(shù)據(jù)2011-10-10
PHP用mysql_insert_id()函數(shù)獲得剛插入數(shù)據(jù)或當(dāng)前發(fā)布文章的ID
向mysql 插入數(shù)據(jù)時(shí),很多時(shí)候我們想知道剛剛插入數(shù)據(jù)的id,這對(duì)我們很有用。下面這篇文章就詳細(xì)給大家介紹了利用mysql_insert_id()函數(shù)獲得剛插入數(shù)據(jù)或當(dāng)前發(fā)布文章的ID,有需要的朋友們可以參考借鑒,感興趣的朋友們下面來(lái)一起看看吧。2016-11-11
基于命令行執(zhí)行帶參數(shù)的php腳本并取得參數(shù)的方法
這篇文章主要介紹了基于命令行執(zhí)行帶參數(shù)的php腳本并取得參數(shù)的方法,分析了命令行運(yùn)行PHP代碼的原理、用法與相關(guān)注意事項(xiàng),需要的朋友可以參考下2016-01-01
PHP實(shí)現(xiàn)從上往下打印二叉樹(shù)的方法
這篇文章主要介紹了PHP實(shí)現(xiàn)從上往下打印二叉樹(shù)的方法,涉及php二叉樹(shù)遍歷相關(guān)操作技巧,需要的朋友可以參考下2018-01-01
PHP頁(yè)面靜態(tài)化——純靜態(tài)與偽靜態(tài)用法詳解
這篇文章主要介紹了PHP頁(yè)面靜態(tài)化——純靜態(tài)與偽靜態(tài)用法,結(jié)合實(shí)例形式分析了PHP頁(yè)面靜態(tài)化——純靜態(tài)與偽靜態(tài)相關(guān)原理、實(shí)現(xiàn)方法與相關(guān)操作注意事項(xiàng),需要的朋友可以參考下2020-06-06
PHP設(shè)計(jì)模式之工廠模式實(shí)例總結(jié)
這篇文章主要介紹了PHP設(shè)計(jì)模式之工廠模式,簡(jiǎn)單介紹了工廠模式的概念、原理并結(jié)合實(shí)例形式總結(jié)分析了工廠模式的具體定義及使用方法,需要的朋友可以參考下2017-09-09

