cURL php загружает и загружает без сохранения в середине


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

Author: Benjamin Powers, 2011-10-24

2 answers

Конечно, вы можете это сделать. Я не уверен, что вы можете использовать cURL для ПУБЛИКАЦИИ. Вам придется изучить его методы, чтобы узнать, позволит ли он вам выполнить обратный вызов для следующего фрагмента данных.

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-пакет

 1
Author: Brad, 2017-05-23 12:19:57

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

Я знаю, что вы подразумеваете под потоковой передачей, так как вы хотите передать/передать загружаемый файл для РАЗМЕЩЕНИЯ или ПУБЛИКАЦИИ на другом сервере.

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

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

 0
Author: DarthVader, 2011-10-24 20:08:51