Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Надежный downloader
Форумы портала PHP.SU » » Вопросы новичков » Надежный downloader

Страниц (1): [1]
 

1. aksktis - 07 Ноября, 2012 - 13:19:40 - перейти к сообщению
Здравствуйте, проблема в следующем:
В интранете есть простой сервис для хранения файлов - каждый пользователь имеет свой "профиль" и список загруженных им файлов. На каждый файл генерится ссылка для загрузки из интернета. Некотрые пользователи жалуются, что люди, которым они передают ссылки, не могут по ним скачать файлы. При этом я эти ссылки проверял практически на всех браузерах и на разных ОС. Все работает. Собственно суть:
я выложу часть этих ссылок и прошу вас их проверить:

http://hermes[dot]hermitage[dot]ru/users[dot][dot][dot]AME=HA001834[dot]TIF
http://hermes[dot]hermitage[dot]ru/users[dot][dot][dot]AME=OR_43909[dot]TIF
http://hermes[dot]hermitage[dot]ru/users[dot][dot][dot]N[dot]Sk-311[dot]TIF[dot]zip
http://hermes[dot]hermitage[dot]ru/users[dot][dot][dot];NAME=БМ-472[dot]TIF
http://hermes[dot]hermitage[dot]ru/users[dot][dot][dot]-480,485,526[dot]TIF
http://hermes[dot]hermitage[dot]ru/users[dot][dot][dot];NAME=ЗО-762[dot]tif

вот код загрузчика (может будут идеи в чем может быть проблема):
Спойлер (Отобразить)


Пожалуйста если у кого-то что-то не загрузится - отпишитесь.. напишите ссылку, браузер, ОС.. Заранее спасибо
2. Zuldek - 07 Ноября, 2012 - 14:03:16 - перейти к сообщению
Все грузится.
Проблема в использовании пыхи и браузеров вместо Sambы и vsftpd, или ProFTPd с готовой веб-мордой.
3. aksktis - 07 Ноября, 2012 - 14:09:30 - перейти к сообщению
Zuldek пишет:
Проблема в использовании пыхи и браузеров вместо Sambы и vsftpd, или ProFTPd с веб-мордой.

понимаю что есть готовые и прямые решения, но моментально всех пользователей на них не пересадить, слишком их много, а проблемы возникают у одного пользователя из 10.
Хочется отладить то что есть, а потом потихоньку поднимать другой сервис.

P.S. спасибо что проверили

P.P.S Вообще сейчас в разработке корпаративный портал.. так что к нему и буду прикручивать файлообменник, но это тоже не быстро
4. aksktis - 08 Ноября, 2012 - 14:15:09 - перейти к сообщению
Проблема решилась.
Состояла она в том что при медленном соединении загрузка прерывалась примерно минуты через 3-4 (собственно именно поэтому я ее и не мог поймать - внутри локалки время загрузки составляет секунды)

Решилась проблема переписыванием даунлоадера, вот код (мало ли кому пригодится):
CODE (htmlphp):
скопировать код в буфер обмена
  1. <?
  2.         $file = utf_win($_REQUEST['file_name'], 'w');
  3.         $folder = $_REQUEST['folder_name'];
  4.         $path = $folder . '/data/' . $file;
  5.         $size = filesize($path);
  6.         output_file($path,$file);
  7.         function output_file($path, $file) {
  8.                 if (ereg('Opera(/| )([0-9].[0-9]{1,2})', $_SERVER['HTTP_USER_AGENT']))
  9.  
  10.                 $UserBrowser = "Opera";
  11.  
  12.                 elseif (ereg('MSIE ([0-9].[0-9]{1,2})', $_SERVER['HTTP_USER_AGENT']))
  13.  
  14.                 $UserBrowser = "IE";
  15.                 elseif (ereg('Firefox', $_SERVER['HTTP_USER_AGENT']))
  16.  
  17.                 $UserBrowser = "Other";
  18.                 elseif (ereg('Chrome', $_SERVER['HTTP_USER_AGENT']))
  19.  
  20.                 $UserBrowser = "Other";
  21.  
  22.                 else
  23.  
  24.                 $UserBrowser = '';      
  25.                 if (!file_exists($path)) die ("File don't exists!");
  26.                 $mime_type = ($UserBrowser == 'IE' || $UserBrowser == 'Opera') ?
  27.  
  28.                  'application/octetstream' : 'application/octet-stream';
  29.                 header('Content-Type: ' . $mime_type);
  30.                 header ("Accept-Ranges: bytes");
  31.                 header ("Content-Length: ".filesize($path));
  32.                 header('Content-Disposition: attachment; filename="'.$_REQUEST['file_name'].'"');
  33.  
  34.                 header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
  35.  
  36.                 header("Cache-control: private");
  37.  
  38.                 header('Pragma: private');
  39.                 if ($UserBrowser != "Other")
  40.                         readfile($path);
  41.                 else {
  42.                         $fp = fopen($path, 'rb');
  43.                         fpassthru($fp);
  44.                 }
  45.         }
  46.        
  47.         function utf_win($str, $type){
  48.  
  49.         static $co = '';
  50.  
  51.         if (!is_array($co))
  52.  
  53.         {
  54.  
  55.         $co = array();
  56.  
  57.         for ($x=128; $x <= 143; $x++){
  58.  
  59.         $co['utf'][] = chr(209) . chr($x);
  60.  
  61.         $co['win'][] = chr($x + 112);
  62.  
  63.         }
  64.  
  65.         for ($x=144; $x<= 191; $x++){
  66.  
  67.         $co['utf'][] = chr(208) . chr($x);
  68.  
  69.         $co['win'][] = chr($x + 48);
  70.  
  71.         }
  72.  
  73.         $co['utf'][] = chr(208) . chr(129);
  74.  
  75.         $co['win'][] = chr(168);
  76.  
  77.         $co['utf'][] = chr(209) . chr(145);
  78.  
  79.         $co['win'][] = chr(184);
  80.  
  81.         }
  82.  
  83.         if ($type == 'w'){
  84.  
  85.         return str_replace($co['utf'], $co['win'], $str);
  86.  
  87.         }
  88.  
  89.         elseif ($type == 'u'){
  90.  
  91.         return str_replace($co['win'], $co['utf'], $str);
  92.  
  93.         }
  94.  
  95.         else
  96.  
  97.         {
  98.  
  99.         return $str;
  100.  
  101.         }
  102.  
  103.         }
  104. ?>
  105.  


Кстати есть идеи из-за чего рвалась связь, может директиву какую-нибудь хитрую нужно указать или еще что?

 

Powered by ExBB FM 1.0 RC1