|
|
|
| Привет всем
Необходимо реализовать сабж.
Причем размер файла может быть и большим. Я как понимаю если делать это через форму то сервер зарубит
закачку по нехватке памяти или еще что. Вообщем как бы вы посоветовали реализовать данную задачу.
Заранее всем спасибо | |
|
|
|
|
|
|
|
для: buka
(19.12.2007 в 09:27)
| | Большой файл следует разбивать либо на части и собирать на сервере, либо загружать его по FTP. | |
|
|
|
|
|
|
|
для: cheops
(19.12.2007 в 12:06)
| | А как разбить его тогда ? Можно пример ? | |
|
|
|
|
|
|
|
для: buka
(23.12.2007 в 10:41)
| | Вы сможете найти нужный вам срипт в теме по ссылке http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=827. | |
|
|
|
|
|
|
|
для: cheops
(23.12.2007 в 12:34)
| | Ну в итоге я не смогу закачать целый файл на сервер ? | |
|
|
|
|
|
|
|
для: buka
(24.12.2007 в 08:04)
| | Разбиваете файл на части, допустимого размера, закачиваете на сервер, на котором кладете скрипт, что будет собирать из кусочков файл. Вы плохо читали что вам Хеопс написал?
Разбить
<?php
// Имя файла
$filename = "Site.rar";
// Разбиваем файл на куски по 10 000
// За одно и запишем их в разные файлы
$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++;
// В цикле разбиваем содержимое файла в переменной
// $bufer на части
for($i=0; $i<$count; ++$i)
{
$part = substr($bufer,$i*$piece,$piece);
// Сохраняем кусок в файле
$fp = fopen("Site.tm".$i,"w");
fwrite($fp,$part);
fclose($fp);
}
?>
|
Склеить
<?php
$bufer = "";
for($i=0; $i<100000; ++$i)
{
$filename = "Site.tm".$i;
if(file_exists($filename))
{
$fp = fopen($filename,"r");
$bufer .= fread($fp,filesize($filename));
fclose($fp);
}
else
{
// Если файла с таким именем не
// существует - выходим из цикла
break;
}
// Склееные значения $bufer
// помещаем в кончный файл
$fp = fopen("Site_final.rar","w");
fwrite($fp,$bufer);
fclose($fp);
}
?>
|
| |
|
|
|
|
|
|
|
для: mihdan
(24.12.2007 в 10:48)
| | Автор спрашивает видимо о файле, закачиваемом от клиента через форму, и первая часть кода "Разбить", уж никак не может разбить файл у клиента. | |
|
|
|
|
|
|
|
для: sim5
(24.12.2007 в 11:28)
| | Ахтунг, наконец-то меня кто-то понял. Естессно вопрос стоит как быть в таком случае. То есть загрузка через форму больших файлов возможно ? | |
|
|
|
|
|
|
|
для: buka
(24.12.2007 в 18:31)
| | Через FTP видимо надо. | |
|
|
|
|
|
|
|
для: sim5
(24.12.2007 в 18:40)
| | Поняли? Вас ахтунгом назвали. | |
|
|
|
|
|
|
|
для: Unkind
(24.12.2007 в 18:41)
| | Найн :) | |
|
|
|
|
|
|
|
для: cheops
(19.12.2007 в 12:06)
| | Если сервер собственный, то можно изменить максимальный объем загружаемого файла в php.ini | |
|
|
|
|
|
|
|
для: Faraon
(24.12.2007 в 21:14)
| | Странно, что тема нашла раскрытие через добрый десяток постов =) | |
|
|
|
|
|
|
|
для: `JUP`
(24.12.2007 в 21:20)
| | Нужно сразу указать свой сервер или бесплатный хостинг какой-нить - тогда ответили бы сразу ;) | |
|
|
|
|
|
|
|
для: mihdan
(25.12.2007 в 10:41)
| | А другие варианты есть какие-нить, сервер свой. Просто кроме ftp и формы есть варианты юзабильной загрузки файла на сервер, кроме как через форму ? | |
|
|
|
|
|
|
|
для: buka
(25.12.2007 в 20:13)
| | >юзабильной загрузки файла на сервер
Поясните, что это значит? | |
|
|
|
|
|
|
|
для: Faraon
(25.12.2007 в 21:26)
| | Файлы на свой сервер и любой сервер в Вашей сети можно загрузить (при наличии соответствующих полномочий и настроек серверов) по HTTP (т.е. через форму), FTP и используя протоколы Telnet, SSH. | |
|
|
|