2014-09-25 127 views
0

我有一個腳本,開始在PHP下載。當用戶點擊開始下載的鏈接時,它應該提示用戶是否要保存文件。它在Firefox中工作正常,但在Safari和Chrome中,下載會自動啓動,而不會提示用戶。PHP下載腳本,自動下載而不是提示,因爲它應該

這裏是我的代碼

$extension = fileexten($filename); 
    if(($filename!= false)&&($fakename!=false&& @fopen($filename,'r')==true)){ 
    $mime = contenttype($extension); 
    set_time_limit(0); 
    header('Pragma: public'); 
    header('Expires: 0'); 
    header("Content-Type:".$mime); 
    header('Cache-Control: must-revalidate, post-check=0, pre-check=0'); 
    header('Cache-Control: private', false);   
    header('Content-Disposition: attachment;filename='.$fakename.'.'.$extension); 
    header("Content-Transfer-Encoding: binary"); 

     if (ob_get_length() > 0) { 
     ob_end_clean(); 
     } 
    flush(); 
    readfile($filename); 
    } 
    else{ 
    $error = "<h3>We could not find this file</h3>";} // If the filename or fake filename could not be retrieved. 

}

反正我可以確保瀏覽器會提示他們保存或下載,而不是它在其他瀏覽器自動啓動文件?

+2

這是一個瀏覽器控制的行爲,你不能改變,從PHP。 – 2014-09-25 21:08:07

+0

這是這些瀏覽器的標準行爲。如果我不得不處理提示下載,我會很煩惱。 – Quentin 2014-09-25 21:08:27

+0

什麼是你發送的MIME類型?如果您在用戶的瀏覽器中使用無效或不可能配置的內容,他們會收到提示。但是,如果他們告訴瀏覽器自動保存(比如說)pdf文件,那麼你無法重寫這個文件,因爲它沒有發出一個謊言,並說「這不是你正在查找的PDF」 – 2014-09-25 21:10:32

回答

2

它與腳本無關,只是瀏覽器設置。

在谷歌瀏覽器的情況下,這就是你怎麼改變它:

enter image description here