Forum Webscript.Ru

Программирование => Perl => Тема начата: borkey от 04 Июля 2006, 20:19:28

Название: Событие - файл скачан полностью. Как определить?
Отправлено: borkey от 04 Июля 2006, 20:19:28
Подскажите, люди умные :)

Ситуация следующая, выдаю файл через скрипт:

$filepath="/upload/blabla.zip";
$filename="blabla.zip";

my $size = -s $filepath;

my $range = 0;   # Нижняя граница
my $rlow = 0;   # Верхняя граница
my $rhigh = $size - 1;

if ($size && $ENV{HTTP_RANGE} =~ /^bytes=(\\d*)-(\\d*)/)
{
  $range = 1;
  if ($2 eq \'\' && $1 > 0)
  {
    $rlow = $1;
  }
  elsif ($1 eq \'\' && $size - $2 > 0)
  {
    $rlow = $size - $2;
  }
  elsif ($1 <= $2)
  {
    $rlow = $1;
    $rhigh = $2;
  }
  else
  {
    $range = 0;
  }
}

# Выводим заголовки
if ($range)
{
  print "Status: 206 Partial Content\\n";
  print "Content-Range: bytes $rlow-$rhigh/$size\\n";
  $size = $rhigh - $rlow + 1;
}
print "Accept-Ranges: bytes\\n";
print "Content-Length: $size\\n" if ($size > 0);
print "Content-Type: application/octet-stream; name=$filename\\n";
print "Content-Disposition: attachment; filename=\\"$filename\\"\\n\\n";

my $BufferSize = 1024;

my $buf = \'\';
$BufferSize = $size if ($BufferSize > $size);

# Вывод содержимого файла
open(DATAFILE, $filepath);
binmode(DATAFILE);
binmode(STDOUT);
seek(DATAFILE,$rlow,0);
while (read(DATAFILE,$buf,$BufferSize))
{
  my $delta = $rhigh - tell() + 1;
  print $buf;
  last if ($delta < 1);
  $BufferSize = $delta if ($BufferSize > $delta);
}
close DATAFILE;


Возможно ли в данном случае отследить, что файл скачан от начала до конца?

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

Была мысль парсить логи, но при закачке в несколько потов, в логах непонятные цифры, т.е. складывая их получается опять таки немного отличный размер от реального, причины не нашел... помогите...
Название: Событие - файл скачан полностью. Как определить?
Отправлено: ondr от 05 Июля 2006, 00:21:55
скачал ли пользователь файл полностью не определить
Название: Событие - файл скачан полностью. Как определить?
Отправлено: borkey от 06 Июля 2006, 21:00:43
тогда как это делают rapidshare или megaupload?