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

Форум PHP

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

 

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

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

тема: Разбивка файлов
 
 автор: Tor   (19.11.2004 в 18:45)
 
 

Как можно разбить файл (любой) на несколько частей?

   
 
 автор: cheops   (19.11.2004 в 23:31)   письмо автору
 
   для: 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 - это в байтах.

А как их склеить?

   
 
 автор: cheops   (20.11.2004 в 00:36)   письмо автору
 
   для: 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)
 

Спасибо.