Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр 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 Яндекс.Метрика Яндекс цитирования