отправить двоичный файл из переменной вместе с обычным текстом, используя curl с php - PullRequest
0 голосов
/ 05 августа 2011

Я знаю о публикации только двоичного файла:

$file_contents = file_get_contents("http://example.org/image.jpg");
curl_setopt($ch, CURLOPT_POSTFIELDS, $file_contents); 

, а также о публикации текста вместе с двоичным файлом из файла на диске:

curl_setopt($ch, CURLOPT_POSTFIELDS, array(
  "name" => "peter",
  "msg" => "hello",
  "foo" => "@file/on/disk/image.jpg"
));

Но что я не могу понятькак разместить двоичные данные непосредственно из переменной (например, $ file_contents) вместе с парами ключ-значение в виде простого текста.Возможно ли это с помощью curl?

Причина, по которой я спрашиваю, заключается в том, что я использую API Facebook для создания событий и мне нужно загрузить изображение вместе с остальными данными о событиях.Поскольку я получаю изображения из Интернета, было бы замечательно, если бы мне не нужно было сохранять их на диске перед публикацией, затем удалять их с диска, а вместо этого делать публикацию напрямую с данными из file_get_contents (), сохраненными впеременная php.

1 Ответ

1 голос
/ 23 января 2013

Вы можете передавать параметры в виде строки запроса в URL, а также передавать двоичные данные в постполе. На принимающей стороне все параметры могут быть получены из $ _REQUEST

$file_contents = file_get_contents("http://example.org/image.jpg");

$c = curl_init();
curl_setopt($c, CURLOPT_URL, 'http://example.com/test.aspx?name=peter&msg=hello');
curl_setopt($c, CURLOPT_POSTFIELDS, $file_contents);
curl_setopt($c, CURLOPT_POST, 1);
curl_setopt($c, CURLOPT_VERBOSE, 0);
curl_setopt($c, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($c, CURLOPT_FOLLOWLOCATION, 0);
$cResponse = curl_exec($c);
curl_close($c);  
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...