|
автор: Tor (19.11.2004 в 18:45) |
|
| Как можно разбить файл (любой) на несколько частей? | |
|
|
|
|
|
|
|
для: Tor
(19.11.2004 в 18:45)
| | Хм... т.е. требуется разбить файл на части определённого размера или файл требуется разбить на определённое число кусков? Вот вариант привязанный к размеру куска:
<?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);
}
?>
|
| |
|
|
|
|
автор: Tor (20.11.2004 в 00:04) |
|
|
для: cheops
(19.11.2004 в 23:31)
| | Как я понимаю 10000 - это в байтах.
А как их склеить? | |
|
|
|
|
|
|
|
для: Tor
(20.11.2004 в 00:04)
| | >Как я понимаю 10000 - это в байтах.
Да это байты.
>А как их склеить?
<?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);
}
?>
|
| |
|
|
|
|
автор: Tor (21.11.2004 в 16:41) |
|
|
для: cheops
(20.11.2004 в 00:36)
| | Спасибо. | |
|
|
|