2014-01-29 68 views
9

看來,Firefox已經與文件名下載內空間的問題......火狐在文件名的空間,下載時出現問題

header('Content-Type: text/csv'); 
header('Content-Disposition: attachment;filename='.$filename); 
$fp = fopen('php://output', 'w'); 
fputs($fp, $csvdata); 
fclose($fp); 

這裏被命名爲文件的例子:Test_ Grad Fair 2_20140129_1312_607.csv

當我嘗試使用上面的代碼使用FireFox下載文件時,會發生以下情況。 (主要問題是它刪除的文件擴展名!)

Download Image from Firefox

,當我嘗試從Safari瀏覽器下載它,或Chrome:

Downloading it from Safari

   

我知道一個解決方案可能會做類似的事情:

$filename = str_replace(' ', '', $filename); 

但是,我更願意弄清楚爲什麼FireFox會遇到這個問題,看起來有點荒謬,你不能在文件名中留出空間。這可能像%20而不是空間問題?

+2

空間中的文件名是將要在線託管工作,通常是一個壞主意。重命名文件比等待Firefox不出現這個問題要容易得多。 – ElendilTheTall

+1

你真的嘗試過'%20'或'+'嗎?或'urlencode()'? –

回答

1

我有一個小問題,同時下載同文件名的文件中包含的空間。 我使用以下代碼修復了此問題。 我已經爲CodeIgniter框架工作編寫了這個代碼。

$file_name = 'Test Pdf.pdf'; //Your file name 
    $original_file_name = 'Test Pdf.pdf'; //Your file name 
    $file_name = str_replace(' ', '%20', $file_name); 
    $file_url = asset_url("uploads/agent_logo/46/".$file_name);// Full file path including file name. 
    ob_start(); 
    ob_end_clean(); 
    header('Content-Type: application/octet-stream'); 
    header('Content-Transfer-Encoding: Binary'); 
    header("Content-Disposition: attachment; filename=\"" . $original_file_name . "\""); 
    readfile($file_url); 

這將爲所有類型的文件和所有的瀏覽器包括Mozilla Firefox和IE