[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Проблема при скачивании файла
snizhok
Проблема заключается в следующем: есть файл download.php

$fileName = htmlChars($_GET['file']);
header("Content-Type: application/octet-stream");
header("Content-Disposition: attachment; filename=".$fileName);
echo file_get_contents('./prices/'.$fileName);
exit;


При обращении к которому должен качаться zip архив, но вместо этого качается файл download.php, который естественно пустой, а IE вообще умудряется выкинуть ошибку:

"Не удалось загрузить download.php, Не удалось открыть этот интернет-узел..."



Спустя 17 минут, 1 секунда (21.09.2012 - 17:59) TranceIT написал(а):
PHP точно подключен?
Что phpinfo(); говорит на этот счет?

Спустя 13 минут, 9 секунд (21.09.2012 - 18:12) vital написал(а):

$fileName = htmlChars($_GET['file']);
header("Content-Type: application/octet-stream");
header("Content-Disposition: attachment; filename='".$fileName."'");
readfile('./prices/'.$fileName);


Отрывок кода должен выглядеть как минимум вот так.

А вообще поведение описанное напоминает просто отключенный пхп.

Спустя 23 минуты, 12 секунд (21.09.2012 - 18:35) neadekvat написал(а):
Цитата (vital @ 21.09.2012 - 19:12)
Отрывок кода должен выглядеть как минимум вот так.

Собственно, что ему мешает выглядеть так, как он выглядит у автора?

Спустя 1 час, 9 минут, 44 секунды (21.09.2012 - 19:45) snizhok написал(а):
а как проверить включен ли php? Страницы сайта загружаются нормально, все остальное вроде работает, данные из бд подтягиваются без проблем и сам файл, который должен скачиватся, создается, но вот скачать его не получается

Спустя 1 минута, 43 секунды (21.09.2012 - 19:46) twin написал(а):
Вот это
htmlChars($_GET['file']);
наводит на мысль о причастности...
А в $_GET['file'] вообще что находится?

Спустя 18 минут, 54 секунды (21.09.2012 - 20:05) snizhok написал(а):
twin ну да учился я немного на Ваших материалах
Проблема решилась, вроде была из-за того, что в названии файла использовалось нижнее подчеркивание

Спасибо всем

Спустя 19 минут, 37 секунд (21.09.2012 - 20:25) snizhok написал(а):
Немного поспешил, проблема с IE осталась, через браузер я не могу скачать, а через download master получается

Спустя 7 минут, 55 секунд (21.09.2012 - 20:33) vital написал(а):
Цитата (neadekvat @ 21.09.2012 - 17:35)
Цитата (vital @ 21.09.2012 - 19:12)
Отрывок кода должен выглядеть как минимум вот так.

Собственно, что ему мешает выглядеть так, как он выглядит у автора?

Я добавил 2 вещи.
1. Название файла в кавычках.
Это согласно RFC уж не помню какому, гуглите сами.
Без кавычек имя файла будет показано не правильно если в нем есть пробелы как минимум.
А пользователи обычно хотят привычные им имена файлов при скачивании, с русскими буквами и пробелами. Пользователи они такие, да.
2. echo file_get_contents() - не более чем костыль для readfile().
Вторая функция нужна именно для такой ситуации - когда надо файл напрямую вывести.
Мне кажется глупо не использовать правильные средства?
К тому же, я думаю что вариант с readfile() потратит меньше памяти, поскольку вариант тса сначала загрузит весь файл в память, а только потом выведет, когда readfile() тупо по ходу чтения сразу отправляет в stdout.

Хотя, конечно, учитывая, что говнокодить на пхп общепринятая практика этим всем можно пренебречь.

Спустя 2 часа, 16 минут (21.09.2012 - 22:49) neadekvat написал(а):
vital, так, быть может, такие детали стоило объяснить новичку?
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.