2008-09-22 42 views
5

我已經接收加密的URL,並從生成下載,腳本的最批評家相提並論是這樣一個腳本:無法在IE7下載文件,但Firefox,Chrome等沒有任何問題。?

$MimeType = new MimeType(); 
$mimetype = $MimeType->getType($filename); 
$basename = basename($filename); 
header("Content-type: $mimetype"); 
header("Content-Disposition: attachment; filename=\"$basename\""); 
header('Content-Length: '. filesize($filename)); 
if (@readfile($filename)===false) { 
    header("HTTP/1.0 500 Internal Server Error"); 
    loadErrorPage('500'); 
} 

下載工作原理的魅力除了IE以外的任何瀏覽器,我已經看到了問題的相關到'no-cache'標題,但我不發送任何這樣的內容,他們談論utf-8字符,但沒有任何utf-8 characters(並且$ filename沒有任何utf-8字符)。

+0

「它在IE中工作除外」根本沒有任何幫助。它怎麼不起作用?是否有錯誤訊息?超時?它顯示文件內容嗎?它下載錯誤的東西? – Jim 2008-09-22 20:39:40

+0

超時基本上,它彈出一個下載窗口,但從來沒有提前,在幾分鐘後超時說:「Internet Explorer無法從WebServer下載FileName」 – levhita 2008-09-22 21:09:37

回答

3

This site在IE6中遇到類似於您的問題。總結如下:

session_start()默認發送一個包含「no-store」的緩存控制頭。 Internet Explorer將這個過於簡單,但沒有適當的 錯誤處理情況,並因此在您嘗試將輸出頁保存到磁盤時發生密碼性爆炸。

在session_start()之前,加上「session_cache_limiter(‘無’);」,或查找該 功能和調整限適當(可能「私人」接近 標記)。

我認識的代碼片斷您發佈不包括session_start();一個電話,但我想我會分享在此情況下,可能的解決方案你有給它打個電話,只是沒有告訴我們。

+0

是有一個sessions_start()首先,我只是發佈該代碼,因爲是一個很長的代碼。 – levhita 2008-09-22 20:57:55

0

使用此

在IE7瀏覽器進入Internet選項 - >安全 - >自定義級別 - >下載 然後啓用自動提示文件下載。

這會解決問題。

希望這會有所幫助

相關問題