2010-12-06 107 views
0

我需要使用This Class從我使用的文章撰寫網站上的多個文件(img/video/mp3),唯一的和主要的問題是: 文章中的所有圖像應該由該類顯示,並且該類不顯示圖像(由URL調用時啓動下載)。 我設法解決這個問題通過刪除這一行(也許線107)在IE中沒有顯示圖片,firefox/chrome/others很好!

header('Content-Disposition:attachment; filename="'.$this->properties["name"].'";'); 

這使我受益匪淺中顯示來自Chrome和Firefox,但是IE仍然圖像啓動下載:(。

有什麼路/頭,以修復

編輯:

添加以下到元類型:

case "jpg": $content_type="image/".$file_extension; break; 
case "gif": $content_type="image/".$file_extension; break; 
case "png": $content_type="image/".$file_extension; break; 
+0

`$ this-> properties [「name」]`有什麼值? – Gumbo 2010-12-06 15:31:00

+0

{anything} .jpg任何東西都是a-zA-Z0-9_ – 2010-12-06 15:34:38

回答

0

隨着內容處置設置爲附着實際上旨在被不用於顯示直接在資源:

正文部分可以被指定`附件」以指示它們是從主分開郵件消息的正文,並且它們的顯示不應該是自動的,而是取決於用戶的進一步行動。

不過,儘管Content-Disposition header field相當MIME的一部分,而不是HTTP的一部分,它「已被提議作爲原始服務器的手段提出一個默認的文件名,如果該內容保存到一個文件中的用戶請求。」(參見HTTP/1.1 – 19.5 Additional Features

此外到的是,使用了特殊媒體類型應用/八位字節流建議的暗示下載:

如果此標頭與響應中使用應用程序/ o ctet-stream content-type,暗示的建議是用戶代理不應該顯示響應,而是直接輸入`save response as ...'對話框。

但既然要資源直接顯示,使用內容處置價值直列來代替。有了這個,你也可以使用的文件名參數來指定一個不同於URL的文件名。

另請參閱Julian Reschke’s Test Cases for HTTP Content-Disposition header field and the Encodings defined in RFC 2047 and RFC 2231/5987瞭解用於編碼文件名參數的編碼的更多信息。

0

我的猜測是,IE仍然需要一個有效的Content-Type標題(假設該類不提供圖像,因爲它只是強制下載)。可能需要更改這段代碼:

switch($file_extension) { // the file type 
    case "mp3": $content_type="audio/mpeg"; break; 
    case "mpg": $content_type="video/mpeg"; break; 
    case "avi": $content_type="video/x-msvideo"; break; 
    case "wmv": $content_type="video/x-ms-wmv";break; 
    case "wma": $content_type="audio/x-ms-wma";break; 
    default: $content_type="application/force-download"; 
} 

並添加圖像擴展名及其關聯的MIME類型。