Запись в 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, а FF молча его игнорирует.

person Peter van der Wal    schedule 18.11.2013
comment
Вы просто публикуете ответ, так как я нашел то же самое в SO. Спасибо, приятель. - person Patrice Poliquin; 19.11.2013

Длина моего содержимого отличалась от точного пути к файлу. Internet Explorer не смог найти файл для его чтения.

Следует отметить, что в примере:

заголовок («Длина содержимого: ' . Размер файла ($ файл));

$file действительно должен быть полным путем к файлу. В противном случае длина содержимого не всегда будет установлена, что часто приводит к ужасной проблеме с "0-байтовым файлом".

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

person Patrice Poliquin    schedule 18.11.2013