Подскажите, люди умные
Ситуация следующая, выдаю файл через скрипт:
$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;
Возможно ли в данном случае отследить, что файл скачан от начала до конца?
Этим скриптом пытался сохранять размер каждого скачанного кусочка
в отдельном файле, потом когда все сложил - получился отличный размер от реального...
Была мысль парсить логи, но при закачке в несколько потов, в логах непонятные цифры, т.е. складывая их получается опять таки немного отличный размер от реального, причины не нашел... помогите...