Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> получить файлы с удаленного сервера, и отдать их 
:(
    Опции темы
Хрипа
Дата 20.12.2007, 13:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 227
Регистрация: 11.12.2006

Репутация: -6
Всего: нет



Всем привет!
Задача такая:
Есть 2 сервера, сервер 1 - сайт, сервер 2 - файловое хранилище
как мне реализовать скачку файла с сервера один причём файл должен лежать на сервере 2 и пользеватель не должен знать откуда качается файл и истенное название файла:
Код

  $get_name="downlod_name.zip";
  $true_name="http://dl.softportal.com/load/Opera_9.25_International_Setup.exe";
  $f_size=filesize($true_name);
  header("Content-type: application/zip");
  header("Content-Disposition: attachment; filename=".$get_name.";");
  header("Accept-Ranges: bytes");
  header("Content-Length: ".$f_size);
  readfile($true_name);

Данное рещение меня не совсем спасло:
Выскачели ощибки: 
Warning: filesize() [function.filesize]: stat failed for http://dl.softportal.com/load/Opera_9.25_I...ional_Setup.exe in l:\home\custom\www\index.php on line 4

Warning: Cannot modify header information - headers already sent by (output started at l:\home\custom\www\index.php:4) in l:\home\custom\www\index.php on line 5

Warning: Cannot modify header information - headers already sent by (output started at l:\home\custom\www\index.php:4) in l:\home\custom\www\index.php on line 6

Warning: Cannot modify header information - headers already sent by (output started at l:\home\custom\www\index.php:4) in l:\home\custom\www\index.php on line 7

Warning: Cannot modify header information - headers already sent by (output started at l:\home\custom\www\index.php:4) in l:\home\custom\www\index.php on line 8
MZђяяё@єґ Н!ёLН!This program cannot be run in DOS mode. $AЖиЕ§†–§†–§†–†»€–§†–jёЊ–…§†–~»Љ–§†–jёЌ–§†–нёЌ–§†–6…Ј–§†–§‡–¦†–я„џ–§†–„Ќ– §†–ВЎЂ–§†–Rich§†–PEL›к^Bа Ђ |зђ@0щ8e€ЕИЂРЈЂad(ђ<.textє}Ђ `.rdata LђPђ@@.dataШ”аPа@А.rsrcРЈЂ°0@@V‹с‹L$ яt$ѓf‰NЗ@”Bив6‹Ж^ВV‹сицD$tVийЇY‹Ж^ВЗ@”BГ‹AГ3АГ‹яP‹L$Pиж­ВjX‰AГцHaCuЂ HaCйhµH@итґYГU‹мѓмSVWjhЂjjjhЂяuя$’B‹ШѓыяujюXйrЌEфPSя(’B‹шЌG PjBя,’B…А‰Eьu Sя0’BлPя4’B‹рЌEрjPWVSя8’B…АuѓИяй%Sя0’BЂ>B…юЂ~M…фjѓпXt ЉL0€ 0@;Зrфѓ~tjрйХ‹} ‹F‰G‹Fѓg‰G ·FHt"ѓиtѓиt ѓи…¦3Алёлj@лjX‹jШЮяа“Bѓe j P‰EяЊђBѓшuЗE fѓ~u(ѓ} t"VиuY‰GjPяuяђђBяu‰Eшя”ђBjVSjVяuя˜ђB‰fѓ~uѓ} tjяuшяuяђђBяu3цVяд“Bлjш^яuья<’Bяuья@’B‹Ж_^[ЙВUhjBя,’B‹и…нu]ГSVWUя4’B‹L$‹рѓБ)їмЌF-ЉQ€PяЉ€ЉQя€PЖ@ѓБѓАOuгjяа“B‹„ђB‹шЌFPj jWяУЌ†ЬPj hцWяУWjяд“BVfЗfЗFя€ђBU‹ря<’BUя@’B‹Ж_^[]ГцHaCuЂ HaCйhµH@иyІYГ‹Б‹L$‰H‹L$‰HЗP”BВV‹сицD$tVиу¬Y‹Ж^ВЗP”BГSVWj‹с[‹ы9^v6‹F3Ы‹ёЉЂщ-tЂщ/u@Pяt$яT$‹Ш…ЫtG;~s лФяt$ив…Y_‹Г^[ВцHaCuЂ HaCйhµH@иП±YГЉL$ЉБАиАб Б2D$цРГU‹мSWяuиу‹Ш3я;ЯYu3Ал@яuяl‘B9} ‰Ev%V‹E3ТЌ4‹ЗчuЉPЉPи¦яяяGY;} Y€rЭ^Sи ¬YjX_[]
--------------------
<Вырезана, как не соответствующая правилам форума >
PM MAIL   Вверх
gta4kv
Дата 20.12.2007, 13:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Walking around mad.
***


Профиль
Группа: Завсегдатай
Сообщений: 1868
Регистрация: 25.7.2006

Репутация: 21
Всего: 91



1. функция filesize() не работает с удаленными файлами
2. так вроде бы вообще нельзя.
3. попробуйте первой строчкой( после <?php ) написать ob_start(); а на последней строчке ( до ?> ) - ob_end_flush();
PM MAIL   Вверх
Хрипа
Дата 20.12.2007, 13:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 227
Регистрация: 11.12.2006

Репутация: -6
Всего: нет



Самое интересное что на локальном хосте получает локальный файл а удалённый нет!
Помогите получить таким образом удалённый файл! СПАСИБО!
--------------------
<Вырезана, как не соответствующая правилам форума >
PM MAIL   Вверх
Feldmarschall
Дата 20.12.2007, 13:37 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок
****


Профиль
Группа: Участник
Сообщений: 2641
Регистрация: 11.12.2007

Репутация: 22
Всего: 32



Во-первых, исправим терминологическую ошибку: никаких "удаленных файловых систем" в данном случае не существует. Есть удаленный веб-сервер.

во-вторых, http://php.net/filesize

в-третьих, http://phpfaq.ru/header

Но это все объяснения на тему, почему не работает.
А как сделать - тут я не советчик. Перегонка бешеных бегамайт между серверами представляется мне на редкость дурацким занятием. Если не сказать хуже.



Это сообщение отредактировал(а) Feldmarschall - 20.12.2007, 13:39
PM   Вверх
Хрипа
Дата 20.12.2007, 13:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 227
Регистрация: 11.12.2006

Репутация: -6
Всего: нет



gta4kv, а как же тогда узнать удалённый размер файла ??

Добавлено через 3 минуты и 4 секунды
gta4kv, с флушем работает но очень долго потомучто оно вбевает его в память а потом отдаёт побыстрей способов не знаешь ?
--------------------
<Вырезана, как не соответствующая правилам форума >
PM MAIL   Вверх
gta4kv
Дата 20.12.2007, 13:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Walking around mad.
***


Профиль
Группа: Завсегдатай
Сообщений: 1868
Регистрация: 25.7.2006

Репутация: 21
Всего: 91



Хрипа, боюсь, без флуша не получиться. 

ps.Если я не прав исправьте меня. 
PM MAIL   Вверх
Хрипа
Дата 20.12.2007, 13:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 227
Регистрация: 11.12.2006

Репутация: -6
Всего: нет



Код

   function remotefsize($url) {
        $sch = parse_url($url, PHP_URL_SCHEME);
        if (($sch != "http") && ($sch != "https") && ($sch != "ftp") && ($sch != "ftps")) {
            return false;
        }
        if (($sch == "http") || ($sch == "https")) {
            $headers = get_headers($url, 1);
            if ((!array_key_exists("Content-Length", $headers))) { return false; }
            return $headers["Content-Length"];
        }
        if (($sch == "ftp") || ($sch == "ftps")) {
            $server = parse_url($url, PHP_URL_HOST);
            $port = parse_url($url, PHP_URL_PORT);
            $path = parse_url($url, PHP_URL_PATH);
            $user = parse_url($url, PHP_URL_USER);
            $pass = parse_url($url, PHP_URL_PASS);
            if ((!$server) || (!$path)) { return false; }
            if (!$port) { $port = 21; }
            if (!$user) { $user = "anonymous"; }
            if (!$pass) { $pass = "phpos@"; }
            switch ($sch) {
                case "ftp":
                    $ftpid = ftp_connect($server, $port);
                    break;
                case "ftps":
                    $ftpid = ftp_ssl_connect($server, $port);
                    break;
            }
            if (!$ftpid) { return false; }
            $login = ftp_login($ftpid, $user, $pass);
            if (!$login) { return false; }
            $ftpsize = ftp_size($ftpid, $path);
            ftp_close($ftpid);
            if ($ftpsize == -1) { return false; }
            return $ftpsize;
        }
    }


Добавлено через 1 минуту и 13 секунд
gta4kv, 
Дело в том что с флушем оно вбивает в буфер и выдаёт в конце файл без конетента !
Вот решение что я дал определяет размер файла но к сожелению через ФТП.
Ну хоть что-то поставлю фтп серв и пока что так обойдусь на время )
--------------------
<Вырезана, как не соответствующая правилам форума >
PM MAIL   Вверх
skyboy
Дата 20.12.2007, 13:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 75
Всего: 260



Цитата(Feldmarschall @  20.12.2007,  12:37 Найти цитируемый пост)
Во-первых, исправим терминологическую ошибку: никаких "удаленных файловых систем" в данном случае не существует


M
skyboy
подправил название темы

Цитата(Feldmarschall @  20.12.2007,  12:37 Найти цитируемый пост)
Перегонка бешеных бегамайт между серверами представляется мне на редкость дурацким занятием.

Это точно. Хрипа, есть ли возможность на удаленном сервере создать скрипт-менеджер? чтоб закачки получать по ссылке типа "http://fileshare.org/download.php?id=21545" или "http://fileshare.org/files/21545"(через mod_rewrite, чтоб истинное название файла-таки было скрыто)? если да, то на твоем сервере достаточно будет сделать редирект(через тот же header('Location:...'))
PM MAIL   Вверх
gta4kv
Дата 20.12.2007, 13:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Walking around mad.
***


Профиль
Группа: Завсегдатай
Сообщений: 1868
Регистрация: 25.7.2006

Репутация: 21
Всего: 91



Хрипа, если бы вы внимательно смотрели то увидели бы строки:

Код

        if (($sch == "http") || ($sch == "https")) {
            $headers = get_headers($url, 1);
            if ((!array_key_exists("Content-Length", $headers))) { return false; }
            return $headers["Content-Length"];
        }


Это по ХТТП. С помощью заголовков

skyboy, если ты не заметил, у него в примере указана ссылка на softportal.com, я сомневаюсь что он туда сможет хтаччесс и скрипт залить свой.

Это сообщение отредактировал(а) gta4kv - 20.12.2007, 13:51
PM MAIL   Вверх
Хрипа
Дата 20.12.2007, 14:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 227
Регистрация: 11.12.2006

Репутация: -6
Всего: нет



Дело в том что на файловом сервере нет PHP 
там стоит галимый HTTP сервер и ФТП сервер будет!

Добавлено через 1 минуту и 47 секунд
Мне надо просто получать файл и выдовать его конечному пользывателю!
Если бы было php на удалённом серваке я думаю справился бы легко того что знаю как через хедер отдать файл )
--------------------
<Вырезана, как не соответствующая правилам форума >
PM MAIL   Вверх
gta4kv
Дата 20.12.2007, 14:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Walking around mad.
***


Профиль
Группа: Завсегдатай
Сообщений: 1868
Регистрация: 25.7.2006

Репутация: 21
Всего: 91



Хрипа, а в чем проблема сделать редирект на тот сервак просто? 

Или вы пытаетесь скрыть URL?

Это сообщение отредактировал(а) gta4kv - 20.12.2007, 14:10
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0832 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.