作者Comp <comp@cc.ncu.edu.tw>, 信區: www
標題Re: 請問如何設定可以讓人選擇儲存檔案?
時間NCUCC News Server (Wed Jan 26 04:14:46 2005)
轉信站: GIBBS!news2.ncku!ccnews.ncku!news.ccns.ncku!news.mksh.phc!news.nsysu!Sp
Origin: csiedb53.csie.ncu.edu.tw
不存在的騎士 <Xcaliber.bbs@bbs.badcow.com.tw> wrote:
> ※ 引述《Comp <comp@cc.ncu.edu.tw>, 看板: WWW》之銘言:
> : 如果你指的規範是 W3C recommedation 或 RFC,那的確是沒有, 但是
> : Content-Disposition header 已經是 best practice 了,在 HTTP Spec (RFC
> : 2616) 裡面也有討論到這個用法,而且實際上瀏覽器也都支援這個用法. 再怎麼說
> : 也比改檔名或先壓縮這樣的解法正面而且有效多了。
> 這個看起來是伺服器端的東西,對這方面我不太熟
> 也許你可以多解釋一點它的作用方式
> 感謝指教
這是要輸出在 HTTP header 裡面的, 請參閱 RFC2616。基本上
Content-Disposition 並不是正式 HTTP protocol 的一部份, 但是實務上在使用
時是非常簡單而乾淨的. 舉例而言:
Content-Disposition: attachment; filename="a.txt"
瀏覽器看到這個 header 的時候就會主動詢問存檔而不是直接在瀏覽器裡面開啟.
線上版在這裡: http://www.hoolan.org/mm.cgi 會詢問你要不要將檔案存成
a.txt。(IE 有 bug 在第二次以後可能會直接開啟, 關掉 IE 重開一次即可) 這種
方式也適合用在要下載的檔案是從資料庫裡面拉出來或動態產生的時候, 可以順便
指定檔名.
>
> : 還是一樣的結果,你怎麼確定 zip 會被存檔? 如果使用者裝了一個 zip plugin
> : 使得在架構上應該被存檔供以後使用的下載卻被 IE 直接打開來? 或原本的格式
> : 明明是使用者可以用的,但他就是沒有辦法解開 zip 檔?
> 你一直提到plugin這樣的問題
> 但是plugin這種東西,是可以無視任何統一格式的
> 我在續傳軟體裡改一個設定,也可以讓所有副檔名htm的檔案按下去就下載
> 而即使用了某種標準的格式來下載檔案,plugin還是有辦法給他開成即時預覽
> 如果哪天真的遇到一個這麼龜毛的plugin
> 也許你能做的事情只是寫信去罵他、在下載網頁上請使用者不要使用該plugin
> 或者是hack他的網站、把他的檔案殺掉等等
>
> 這某方面來說很像經常有人問的
> "我要怎麼樣才不會被人看到我的原始檔"之類的問題
> 網頁被下載到瀏覽者的電腦裡,實際上檔案可以說已經是任人擺佈了
> 要安裝什麼plugin、要怎麼瀏覽你的網站,決定權終究還是在使用者身上
用上面的方法, 瀏覽器就會直接跳窗詢問, 根本還輪不到 plugin 講話的份. 把上
面例子的 a.txt 改成 a.pdf,就可以詢問使用者要不要存檔成 a.pdf,就算有裝
了 pdf plugin 也一樣。使用者當然有最終的決定權,但是網站的開發者能夠透過
這樣的方式去建議使用者最適當的處理方法,而不是去改檔名或先壓縮起來製造使
用者的不方便。