Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > upload больших файлов


Автор: Shadex 16.2.2006, 22:03
драсти! у меня тут такая проблемка, с которой я уже неделю не могу справиться! поискал у вас на форуме, почитал, но так и не нашел, что хотел! а проблема вот в чем: нужно сделать upload больших файлов на сервер по протоколу HTTP... уже увеличил upload_max_filesize в php.ini и вырубил таймауты @set_time_limit(0); но все равно большие файлы не закачиваются! может у вас есть какие-нибудь идеи, подскажите! заранее благодарен!

Автор: BobiKK 16.2.2006, 22:36
Делить файлы при аплоуде на части

Автор: mr.fox 17.2.2006, 00:01
Shadex, через фтп закачивать.

Автор: Shadex 17.2.2006, 15:50
BobiKK, не подскажешь, как именно можно делить файл? может есть пример? или где почитать?

Автор: BobiKK 17.2.2006, 18:44
Принцип такой:
Код

<?php
$filename = "site.rar";
$piece = 10000;
$fp = fopen($filename, "r");
$bufer = fread($fp, filesize($filename));
fclose($fp);
$count = (int) filesize($filename)/$piece;
if ((float) (filesize($filename)/$piece) - $count != 0) $count++;

for ($i=0; $i<$count; ++$i)
{
$part = substr($bufer, $i*$piece, $piece);
$fp = fopen("Site.tm".$i, "w");
fwrite($fp, $part);
fclose($fp);
}
?>
// это мы разибили файл. А сейчас склеим
<?php
$buffer = "";
for ($i=0; $i<1000000; ++$i)
{
$filename = "site.tm".$i;
if(file_exists($filename))
{
$fp = fopen($filename, "r");
$buffer .= fread($fp, filesize($filename));
fclose($fp);
}
else
{
break;
}
$fp = fopen("site_final.rar", "w");
fwrite($fp, $buffer);
fclose($fp);
}
?>

Автор: mr.fox 17.2.2006, 18:49
я вот всетаки не пойму.. у вас фтп доступ есть? думаю да.. Зачем извращаться и делить файлы если по фтп протоколу можно все закачать??! smile

Автор: solenko 17.2.2006, 20:47
2 BobiKK:
Честно говоря не понял принципа...
Зачем делить локальный файл, чтобы потом произвести его аплоуд?
Задача то стоит -- закачать файл от клиента (т.е. из браузера), если я правильно понял.

Автор: Нурик Сакура 17.2.2006, 21:06
Честно говоря, я не понимаю смысла закачки больших файлов через HTTP протокол. Согласен с mr.fox, что проще через FTP. Через HTTP можно заливать, скажем, JPG рисунки (скрины из игр, к примеру), небольшие архивы, но заливать через HTTP дистрибутив Линукса вряд ли кто-то будет, разве я не прав?

И вообще, что в твоем понимании означает "большие файлы"?

Автор: Mal Hack 17.2.2006, 21:34
Судя по всему автор забыл изменить нас тройку, отвечающую за объем памяти, выделяемой под скрипт.

Автор: Нурик Сакура 17.2.2006, 21:56
Mal Hack
А нельзя ли поточней, где такой зверь водится?

Автор: Shadex 17.2.2006, 23:55
мне просто нужно заливать именно по протоколу HTTP, большие файлы в моем понимании были от 20 до 100 Мб... всем спасибо! мне уже подкинули идейку!

Автор: Нурик Сакура 18.2.2006, 00:01
Shadex
Поделишься?

Автор: Shadex 18.2.2006, 18:14
поделюсь конечно! сделаю, если получится, расскажу подробно! smile

Автор: Mal Hack 18.2.2006, 21:19
Nurik, в php.ini смотри директивы:
Код
max_input_time = 30
memory_limit = 4M

Автор: Нурик Сакура 19.2.2006, 15:47
Mal Hack
Спасибо, посмотрю.

Shadex
Буду ждать результатов.

Автор: Alone 17.8.2006, 15:38
Цитата(Mal Hack @ 18.2.2006,  21:19)
Nurik, в php.ini смотри директивы: 
Код
max_input_time = 30
memory_limit = 4M

Mal Hack, Это не из той оперы smile

При аплоаде файл встречает апач и ложит его в тмп. потом отдает пхп скрипту пост заголовок в котором содержится технич. информация о файле, в том числе имя, миме-тип, путь к временному файлу.

Автор: ewolf 17.8.2006, 16:21
Помимо upload_max_filesize не забывайте увеличивать post_max_size
Все это редактируется в .htaccess

пример:
Код

php_value post_max_size 10000M
php_value upload_max_filesize 10000M


Размер загружаемого файла - до 10 000 мегабайт

Автор: Druidik25 21.8.2006, 15:19
У меня та же проблема. Испытал оччень много методов, как фтп, так и майскуель, как и настройки сервака... Больше 2 мег не хочет грузить. 

Все перечисленные переменные стоят больше, чем указано тут. Но что-то не пускает. По истечение минуты выдает "Невозможно отобразить страницу". Хотя и таймауты все стоят по 3 минуты.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)