Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: скрин скачки файла с сервера
Форумы портала PHP.SU » » Работа с файловой системой и файлами » скрин скачки файла с сервера

Страниц (1): [1]
 

1. marty_ny - 18 Февраля, 2014 - 15:06:39 - перейти к сообщению
Здравствуйте.
Есть скрипт, который должен отдавать файл по запросу.
в теории, все очень банально:
PHP:
скопировать код в буфер обмена
  1.  
  2. $itemName = 'file_name.png';
  3. $fileRoot = '/srv/http/forder/file_name.png';
  4.  
  5. $file = fopen($fileRoot, 'r');
  6. if($file) {
  7. header("Content-type: " . mime_content_type($file));
  8. header("Content-Disposition: attachment; filename=" . rawurlencode($itemName));
  9. while($buffer = fread($file, 65536))
  10. echo $buffer;
  11. fclose($file);
  12. }
  13.  

но файл выходит битый, при чем файлы .txt и .pdf качаются хорошо, а остальные выходят битые.

далее примеры файлов
1-скачан на прямую с сервера
2-скачан скриптом (прикреплю следующим сообщением)
2. marty_ny - 18 Февраля, 2014 - 15:08:05 - перейти к сообщению
здесь файл, слитый при помощи скрипта
3. Tyoma5891 - 18 Февраля, 2014 - 15:28:12 - перейти к сообщению
попробуйте в заголовке делать так:
CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. header("Content-Disposition: attachment; filename=\"".$itemName."\"");
  3.  
4. esterio - 18 Февраля, 2014 - 15:43:20 - перейти к сообщению
Как на PHP скачать файл
5. marty_ny - 19 Февраля, 2014 - 13:32:43 - перейти к сообщению
Tyoma5891 пишет:
попробуйте в заголовке делать так:
CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. header("Content-Disposition: attachment; filename=\"".$itemName."\"");
  3.  


не помогло. ошибка не в названии файла. он латинский, да и знаки переганяет, если что-то не так.

esterio пишет:
Как на PHP скачать файл


если бы ошибка была в неправильных хедерах, я бы сюда не писал.

я подозреваю, что ошибка в кодировке выходящего файла, но не могу понять, почему все именно так.
6. Мелкий - 19 Февраля, 2014 - 13:54:01 - перейти к сообщению
Первый 3 байта в скачанном файле - ef bb bf.
Если ещё не сталкивались - это метка BOM. Скрипты должны сохраняться в UTF8 без BOM.
7. marty_ny - 22 Февраля, 2014 - 11:04:39 - перейти к сообщению
Мелкий пишет:
Первый 3 байта в скачанном файле - ef bb bf.
Если ещё не сталкивались - это метка BOM. Скрипты должны сохраняться в UTF8 без BOM.


файл, содержащий скрипт, был сохранен в utf-8 без bom и раньше.
перегнал все файлы проекта в ту же кодировку, но ничего не изменилось(((
8. Мелкий - 22 Февраля, 2014 - 11:15:14 - перейти к сообщению
Попробуйте пройтись вот этим скриптом по проекту: http://forum.php.su/topic.php?fo...35&topic=101
Где-то эти 3 несчастные байта выводятся.
9. marty_ny - 22 Февраля, 2014 - 11:35:39 - перейти к сообщению
Мелкий пишет:
Попробуйте пройтись вот этим скриптом по проекту: http://forum.php.su/topic.php?fo...35&topic=101
Где-то эти 3 несчастные байта выводятся.


Спасибо огромное!
Вы не поверите! неделю искал эту bom-метку. даже написал bash скрипт, им прогнал проект, в ручную перебирал все обработчики и даже шаблоны (чем черт не шутит).
а благодаря вашей ссылочке нашел файл за 1 минуту.
и как бы вы думали, где он был? в индексном файле, который запускает всю систему.
это просто невероятно(((

Еще раз спасибо огромное!
(Добавление)
хотел плюсонуть, но
количество сообщений оставленных Вами на форуме, недостаточно для данной операции
буду писать и плюсону позже.

 

Powered by ExBB FM 1.0 RC1