Автор Тема: Событие - файл скачан полностью. Как определить?  (Прочитано 3410 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн borkey

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 8
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Подскажите, люди умные :)

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

$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

  • Модератор
  • Глобальный модератор
  • Старожил
  • *****
  • Сообщений: 440
  • +0/-0
  • 0
    • Просмотр профиля
скачал ли пользователь файл полностью не определить
0 OK, 0:1

Оффлайн borkey

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 8
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
тогда как это делают rapidshare или megaupload?

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28