Firefox a des problèmes lors du téléchargement avec un espace dans le nom du fichier
il semble que firefox ait un problème avec les espaces dans le nom du fichier à télécharger...
header( 'Content-Type: text/csv' );
header( 'Content-Disposition: attachment;filename='.$filename);
$fp = fopen('php://output', 'w');
fputs($fp, $csvdata);
fclose($fp);
voici un exemple de fichier nommé:Test_ Grad Fair 2_20140129_1312_607.csv
quand je tente de télécharger le fichier en utilisant le code ci-dessus avec FireFox, ce qui suit se produit. (le principal problème est qu'il supprime l'extension de fichier!)
Et quand j'essaie de le télécharger à partir de Safari, ou Chrome:
je sais que la solution serait de peut-être faire quelque chose comme:
$filename = str_replace(' ', '', $filename);
cependant, je préfère comprendre pourquoi FireFox a ce problème, il semble un peu ridicule que vous ne pouvez pas avoir un espace dans un nom de fichier. Cela pourrait-il être comme un %20
au lieu d'un problème d'espace?
2 réponses
le paramètre filename doit être entouré de guillemets.
header( 'Content-Disposition: attachment;filename="'.$filename.'"');
voir http://kb.mozillazine.org/Filenames_with_spaces_are_truncated_upon_download
j'ai eu un petit problème en téléchargeant un fichier avec le nom de fichier contient de l'espace. J'ai résolu ce problème en utilisant le code suivant. J'avais écrit ce code pour le cadrage 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);
cela fonctionnera pour tous les types de fichiers et tous les navigateurs, y compris mozilla firefox et IE