Записването в txt файл се връща празно в IE

Имам код, който записва данните от формуляр в TXT файл и изглежда, че Internet Explorer не може да прочете файла, след като бъде затворен.

Файлът е записан успешно в моята папка и когато го заредя от FTP, мога да видя стойностите си, но когато направя readfile() при „изпращане“, файлът за изтегляне е празен от данни.

Ето моят код:

$fp = fopen("plan_de_concepts/". $nom_du_fichier, "w");
$savestring = "$sujet=*|*=$concept1=*|*=$concept2=*|*=$concept3=*|*=$c1mc1=*|*=$c1mc2=*|*=$c1mc3=*|*=$c1mc4=*|*=$c1mc5=*|*=$c2mc1=*|*=$c2mc2=*|*=$c2mc3=*|*=$c2mc4=*|*=$c2mc5=*|*=$c3mc1=*|*=$c3mc2=*|*=$c3mc4=*|*=$c3mc5=*|*=$c4mc1=*|*=$c4mc2=*|*=$c4mc3=*|*=$c4mc5=*|*=$c5mc1=*|*=$c5mc2=*|*=$c5mc3=*|*=$c5mc3=*|*=$c5mc4=*|*=$c5mc5=*|*=$c6mc1=*|*=$c6mc2=*|*=$c6mc3=*|*=$c6mc4=*|*=$c6mc5";
fwrite($fp, $savestring);
fclose($fp);

header("Cache-Control: public");
header("Content-Description: File Transfer");
header("Content-Length: ". filesize($nom_du_fichier));
header("Content-Disposition: attachment; filename=". $nom_du_fichier);
header("Content-Type: application/octet-stream; "); 
header("Content-Transfer-Encoding: binary");



readfile('plan_de_concepts/'.$nom_du_fichier);

Работи чудесно във Firefox и Chrome, но IE връща празен.. Има ли начини, по които мога да принудя да изтегля „качената“ версия на файла?


person Patrice Poliquin    schedule 18.11.2013    source източник
comment
възможен дубликат на PHP readfile връща файл с нулева дължина   -  person showdev    schedule 19.11.2013


Отговори (2)


Използвате filesize($nom_du_fichier) и readfile('plan_de_concepts/'.$nom_du_fichier) (обърнете внимание на префикса на папката). Очаквам само един от файловете да съществува.

Изглежда, че IE всъщност използва заглавката Content-Length-header, където FF мълчаливо го игнорира.

person Peter van der Wal    schedule 18.11.2013
comment
Просто публикувате отговора, тъй като намерих същото нещо в SO. Благодаря приятелю. - person Patrice Poliquin; 19.11.2013

Моята дължина на съдържанието беше различна от точния път на файла. Internet Explorer не можа да намери файла, за да го прочете.

Трябва да се отбележи, че в примера:

header('Content-Length: ' . filesize($file));

$file наистина трябва да е пълният път до файла. В противен случай дължината на съдържанието не винаги ще бъде зададена, което често води до страховития проблем с „файл с 0 байта“.

Източник: PHP readfile връща файл с нулева дължина

person Patrice Poliquin    schedule 18.11.2013