CURL PHP скачать и загрузить без сохранения в середине - PullRequest
2 голосов
/ 24 октября 2011

У меня есть ситуация, когда мне нужно переместить файлы из одного места в другое. Используя cURL, просто загрузить файлы, а затем загрузить их, используя символ «at», то есть «file_box» => «@ / path / to / myfile.jpg». То, что я сейчас хочу сделать, это обойти шаг сохранения в середина и просто "поток" файла из одного в другой. Возможно ли это?

Ответы [ 2 ]

1 голос
/ 25 октября 2011

Конечно, вы можете сделать это. Я не уверен, что вы можете использовать cURL для POST, хотя. Вам нужно изучить его методы, чтобы узнать, позволит ли он вам перезвонить для следующего куска данных.

http://curl.haxx.se/libcurl/php/examples/callbacks.html

$ch = curl_init();
curl_set_opt($ch, CURLOPT_HEADERFUNCTION, 'read_header');
curl_set_opt($ch, CURLOPT_WRITEFUNCTION, 'read_body');

function read_header($ch, $data) {
    // Ok, so the header is going to come in here.
    // I assume you will need data, such as MIME type and what not.
    print_r($data);
    return strlen($data); //This means that we handled it, so cURL will keep processing
}

function read_body($ch, $data) {
    // This is where the body of the content will be, in chunks.
    // This function will be called multiple times.
    print_r($data);
    return strlen($data); //Again, if we don't do this, cURL will cancel.
}

Теперь для отправляющей части, похоже, вам придется самостоятельно реализовать HTTP с помощью fsockopen. Дополнительную информацию смотрите здесь: PHP Как отправить необработанный HTTP-пакет

0 голосов
/ 25 октября 2011

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

Я знаю, что вы подразумеваете под потоковой передачей, как вы хотитеПоток / канал файл, который вы загружаете в PUT или POST на другой сервер.

Я не думаю, что потоковая передача возможна с Php curl.Вам нужно сохранить файл локально.затем откройте его и загрузите.

Я проделал аналогичную работу с Java, с тем, что вы на самом деле используете потоки, так что это может сработать, но я не пробовал.

...