2014-01-29 7 views
9

Es scheint, dass Firefox ein Problem mit Leerzeichen im Dateinamen für das Herunterladen hat ...Firefox hat Probleme, wenn sie mit einem Leerzeichen in Dateinamen Herunterladen

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

Hier ein Beispiel für eine Datei mit dem Namen ist: Test_ Grad Fair 2_20140129_1312_607.csv

Wenn ich versuche, die Datei mit dem obigen Code mit FireFox herunterzuladen, geschieht folgendes. (Das Hauptproblem ist, entfernt es die Dateierweiterung!)

Download Image from Firefox

und wenn ich versuche es von Safari herunterladen oder Chrome:

Downloading it from Safari

   

I weiß eine Lösung wäre, vielleicht etwas zu tun wie:

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

Allerdings möchte ich herausfinden, warum FireFox dieses Problem hat, es scheint irgendwie lächerlich, dass Sie keinen Platz in einem Dateinamen haben können. Könnte das wie ein anstelle eines Platzproblems sein?

+2

Spaces in Dateinamen, die online sind, eine schlechte Idee im Allgemeinen gehostet werden werden. Es wird viel einfacher sein, Ihre Dateien umzubenennen, als darauf zu warten, dass Firefox dieses Problem nicht hat. – ElendilTheTall

+1

Haben Sie tatsächlich '% 20' oder' + 'versucht? Oder 'urlencode()'? –

Antwort

1

ich ein kleines Problem hatte, während eine Datei mit dem Dateinamen enthalten Raum herunterzuladen. Ich habe dieses Problem mit dem folgenden Code behoben. Ich hatte diesen Code für CodeIgniter-Frame-Arbeit geschrieben.

$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); 

Dies wird für alle Arten von Dateien arbeiten und allen Browsern wie Mozilla Firefox und IE