Как загрузить файл...

Тема в разделе "Как сделать...", создана пользователем qwerty, 10 июл 2008.

Статус темы:
Закрыта.
  1. qwerty

    qwerty Постоялец

    Регистр.:
    10 апр 2006
    Сообщения:
    75
    Симпатии:
    0
    Доброго дня али вечера!
    Вопрос дня сегодня следующий.Возможно ли и если возможно то как:)Буду благодарен примеру с кодом.
    А интереусет следующее.Есть три моих сервера.На сервере 1 стоит форма загрузки файлов на сервер,что то похожее на подобие рапидшаре и любых других обменников. И на сервере 2, располагается файл.
    С сервера 3 хочу загрузить файл с сервера 2 на сервер 1.
    Самый простой вариант это качаем файл на сервер 3 после того как файл скачался загружаем его на сервер 1.Теперь знатоки внимание вопрос.Можно ли не ждать пока файл загрузится полностью можно ли скачали часть данных скажем в память или еще как и передать серверу для загрузки.и так далее пока порциями не загрузим весь файл полностью.Тоесть отдавать его сразу частями и не сохранять на жеский диск сервера?
     
  2. bork1234

    bork1234 Постоялец

    Регистр.:
    25 июн 2008
    Сообщения:
    65
    Симпатии:
    13
    Вам поможет HTTP/1.1: Header Field Definitions
    (если "сервер 1" при раздаче поддерживает докачку)

    http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html
    Секция "14.16 Content-Range"

    Upd
    У протокола FTP есть возможность FXP (Server-to-Server Transfers) - с третьего сервера объявить о начале передачи файла с "сервера 1" на "сервер 2" минуя третий сервер.

    Страшненький пример на PHP можно посмотреть здесь
     
  3. ctac911

    ctac911 Постоялец

    Регистр.:
    19 июл 2006
    Сообщения:
    145
    Симпатии:
    13
    как расположены сервера, может они доступны локально друг другу? по какому протоколу будет идти обмен?
     
  4. skycode

    skycode Постоялец

    Регистр.:
    31 май 2008
    Сообщения:
    59
    Симпатии:
    22
    сокеты используй, я php не знаю, но примерно так будет
    data=socket.recv(1024) # считать с сервера, предварительно сокет зделать и т.д.
    socket.send(data) # послать на сервер, предварительно сокет зделать и т.д.

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

    qwerty Постоялец

    Регистр.:
    10 апр 2006
    Сообщения:
    75
    Симпатии:
    0

    Еще одни встречный вопрос.Не подскажете, а как можно узнать поддерживает сервер докачку или нет?Тоесть как это можно определить програмно?Какой запрос надо послать и что должно быть в ответе?
     
  6. gregzem

    gregzem

    Регистр.:
    21 окт 2007
    Сообщения:
    200
    Симпатии:
    63
    1. Сервер должен быть HTTP 1.1
    2. Должен понимать директиву Range
    3. Должен отвечать статусом 206 на нее.
     
    qwerty нравится это.
  7. timati

    timati Постоялец

    Регистр.:
    14 июл 2008
    Сообщения:
    134
    Симпатии:
    13
    ЗАходишь сюда phpclasses.org
    Скачиваешь любой класс для аплоада и уаля!15 минут и у тебя классный скрипт закачки файлов на сервер!
     
Статус темы:
Закрыта.