Подтвердить что ты не робот

CURL PHP отправить изображение

Это тривиально, чтобы получить изображение с сервера, но я думаю о чем-то другом. Это сумасшедший вопрос, но... Можно ли отправить файл (изображение) на сервер, но не использовать загрузку формы или ftp-соединение? Я хочу отправить запрос, например. http://www.example.com/file.php с двоичным содержимым. Я думаю, мне нужно установить Content-type header image/jpeg, но как добавить некоторый контент в мой запрос?

4b9b3361

Ответ 1

существует несколько способов использования завитка для загрузки файлов изображений, например:

$ch = curl_init();
$data = array('name' => 'Foo', 'file' => '@/path/to/image.jpeg');
curl_setopt($ch, CURLOPT_URL, 'http://localhost/upload.php');
curl_setopt($ch, CURLOPT_POST, 1);
//CURLOPT_SAFE_UPLOAD defaulted to true in 5.6.0
//So next line is required as of php >= 5.6.0
curl_setopt($ch, CURLOPT_SAFE_UPLOAD, false);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_exec($ch);

вы можете проверить примеры: http://au.php.net/manual/en/function.curl-setopt.php

Ответ 2

см. http://docs.php.net/function.curl-setopt:

CURLOPT_POSTFIELDS Полные данные для публикации в HTTP-режиме "POST". Чтобы опубликовать файл, добавьте имя файла с @и используйте полный путь. Это может быть либо передано как строка с urlencoded, как "para1 = val1 & para2 = val2 &...", или как массив с именем поля в качестве ключа и данных поля как значение. Если значением является массив, заголовок Content-Type будет установлен в multipart/form-data.

Ответ 3

VolkerK полностью прав, но мой опыт подсказывает, что отправка файла "@" будет работать только с массивами.

$post['file'] = "@FILE_Path"

Теперь вы можете отправить файл с помощью CURLOPT_POSTFIELDS