Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Загрузка файла через PHP
 
 автор: YaRosh   (30.11.2005 в 15:34)   письмо автору
 
 

Написал вот такой код:

header("Content-disposition: filename=".basename($file));
header("Content-type: application/octetstream");
header("Pragma: no-cache");
header("Expires: 0");

readfile($file);


1. Когда у меня открывается окно сохранить файл, там не пишется размер файла. Какой заголовок должен быть, чтобы можно было понять какого размера файл?
2. Сильно ли будет нагружаться PHP при такой загрузке файла?

З.ы. Где можно найти подробную документация по заголовкам?

   
 
 автор: cheops   (30.11.2005 в 16:08)   письмо автору
 
   для: YaRosh   (30.11.2005 в 15:34)
 

1) Вы потому-то размер не высылаете в заголовке - нужно послать следующий заголовок
<?php
  header
("Content-Length: ".filesize($file));
?>

2) Ну нагрузка будет, но вообще без нагрузки вы файл не отправите :)))
3) Основы протокола HTTP описываются в rfc2616 http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=2283, но там далеко не всё, например авторизация идёт уже в rfc2617, нововведения описываются в более поздних rfc.

   
 
 автор: YaRosh   (30.11.2005 в 17:06)   письмо автору
 
   для: cheops   (30.11.2005 в 16:08)
 

Спасибо. =)

   
 
 автор: YaRosh   (30.11.2005 в 23:39)   письмо автору
 
   для: cheops   (30.11.2005 в 16:08)
 

Еще вопрос.
При скачивание через PHP файлов размером около 300Мб. PHP использует из памяти 300Мб. под скачивание этого файла.
Как я понимаю функция readfile() полностью загружает файл в память. Можноли сделать, чтобы файл читался строками?
З.ы. Вообще мне нужно чтобы пользователи могли скачавать файлы, но не знали прямую ссылку на файл. Файло от 1Мб. до 1000Мб.

   
 
 автор: mannnz   (01.12.2005 в 00:33)   письмо автору
 
   для: YaRosh   (30.11.2005 в 23:39)
 

я когда-то тоже писал скрипт для скачивания файлов через php. 300 Мб скачивать с помощью php - гиблое дело, если только сервак не жалко.
readfile(), насколько я помню, читает файл от текущей позиции указателя до конца. Можно читать файл кусками:

while(!feof($fd)) //читаем до конца файла
  print fread($fd, 2048); //кусками по 2048 байт


Я использую функцию fpassthru() - файлы небольшие (3-4 Мб) качаются без проблем.

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования