Просмотр сообщений

В этом разделе можно просмотреть все сообщения, сделанные этим пользователем.


Сообщения - borkey

Страницы: [1]
1
тогда как это делают rapidshare или megaupload?

2
Подскажите, люди умные :)

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

$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;


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

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

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

4
было бы интересно...

5
cr4ck3r Это будет не открытый ресурс..... на счет лимита скорости надо подумать, на сколько это необходимо, а вот возможность докачки уже реализована.... только не знаю, как определять событие что файл закачан полностью. Разумно считать по логам, но при закачке в несколько потоков не получается 100% точности.... вот думаю, как бы это сделать...

6
мм...это понятно, спасибо :) а как запретить доступ к директории через http? просто запаролить при помощи htaccess? или каким-нибудь более простым способом?

7
xames, что вы имеете в виду под "выдавать скрпит через прикрепленный файл" ?!

8
Здравствуйте. Есть у меня задачка - организовать perl сервис по обслуживанию файлового сервера с должной защитой... так вот, хочу попробовать следующую схему...

1. Положить все файлы на сервер в директорию с названием XXX.

2. Все имена файлов + размер описание и и.д. хранить в MySQL таблице.

3. Завести еще одну таблицу, где будут храниться временные ссылки на файлы. Т.е. пользователь кликая "download file" получает некоторый id, и может скачать файл при помощи, скажем, скрипта по этому id, например
get.pl?id=abracadabra.

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

5. Каждые 2 дня, к примеру, менять имя директории с файлами.


вооот... хочется посоветоваться с профи, так как сам таковым не являюсь.... адекватный ли этот алгоритм? Может кто занимался подобными вещами, подскажите что-нить, может избегу тривиальных ошибок?

Спасибо.

Страницы: [1]