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

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Надежный downloader

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


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

> Без описания
aksktis
Отправлено: 07 Ноября, 2012 - 13:19:40
Post Id


Новичок


Покинул форум
Сообщений всего: 6
Дата рег-ции: Февр. 2011  


Помог: 0 раз(а)




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

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

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


Пожалуйста если у кого-то что-то не загрузится - отпишитесь.. напишите ссылку, браузер, ОС.. Заранее спасибо
 
 Top
Zuldek
Отправлено: 07 Ноября, 2012 - 14:03:16
Post Id


Постоянный участник


Покинул форум
Сообщений всего: 2122
Дата рег-ции: Июнь 2010  


Помог: 50 раз(а)




Все грузится.
Проблема в использовании пыхи и браузеров вместо Sambы и vsftpd, или ProFTPd с готовой веб-мордой.

(Отредактировано автором: 07 Ноября, 2012 - 14:08:37)

 
 Top
aksktis
Отправлено: 07 Ноября, 2012 - 14:09:30
Post Id


Новичок


Покинул форум
Сообщений всего: 6
Дата рег-ции: Февр. 2011  


Помог: 0 раз(а)




Zuldek пишет:
Проблема в использовании пыхи и браузеров вместо Sambы и vsftpd, или ProFTPd с веб-мордой.

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

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

P.P.S Вообще сейчас в разработке корпаративный портал.. так что к нему и буду прикручивать файлообменник, но это тоже не быстро

(Отредактировано автором: 07 Ноября, 2012 - 14:14:19)

 
 Top
aksktis
Отправлено: 08 Ноября, 2012 - 14:15:09
Post Id


Новичок


Покинул форум
Сообщений всего: 6
Дата рег-ции: Февр. 2011  


Помог: 0 раз(а)




Проблема решилась.
Состояла она в том что при медленном соединении загрузка прерывалась примерно минуты через 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.  


Кстати есть идеи из-за чего рвалась связь, может директиву какую-нибудь хитрую нужно указать или еще что?
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB