проблема загрузки файла cURL - PullRequest
0 голосов
/ 12 сентября 2011

Я пытаюсь загрузить изображение с помощью php cURL. Но что-то не так с этим.

Это почтовые данные

-----------------------------192153227918513
Content-Disposition: form-data; name="resimbaslik"

CCClient
-----------------------------192153227918513
Content-Disposition: form-data; name="imgfile"; filename="clinteastwoodo.jpg"
Content-Type: image/jpeg

И я пытаюсь загрузить свою фотографию с этим php кодом

    $postfields = array();
$postfields ["resimbaslik"] = "CCClient";
$postfields ["imgfile"] = "filename=\"clinteastwoodo.jpg\"";
$referer = "http://www.example.com/ex1.php";
curl_setopt($ch, CURLOPT_URL, 'http://www.example.com/example.php');
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $postfields);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_COOKIEJAR, "cookie.txt");
curl_setopt($ch, CURLOPT_REFERER, $referer);
$result = curl_exec ($ch);

И это дает мне 417 - Expectation Failed ошибку. Изображение находится в том же каталоге, что и мой файл .php.

Может кто-нибудь помочь мне это исправить?

Спасибо.

1 Ответ

1 голос
/ 12 сентября 2011

Является ли сервер, который вы пытаетесь отправить на Lighttpd?Для Lighty существует известная ошибка в обработке заголовка Expect , которая создает именно эту ситуацию.Дополнительную информацию можно найти здесь: http://redmine.lighttpd.net/issues/1017.

В комментариях по приведенной выше ссылке указано простое исправление для PHP и cURL:

<?php
$ch = curl_init();
curl_setopt($ch,CURLOPT_HTTPHEADER,array("Expect:"));
//Other setopt, execute etc...
?>

Вам нужноустановить пустое значение для заголовка Expect.В приведенном выше коде вам просто нужно добавить строку curl_setopt .Примерно так:

$postfields = array();
$postfields ["resimbaslik"] = "CCClient";
$postfields ["imgfile"] = "filename=\"clinteastwoodo.jpg\"";
$referer = "http://www.example.com/ex1.php";
curl_setopt($ch, CURLOPT_URL, 'http://www.example.com/example.php');
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $postfields);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_COOKIEJAR, "cookie.txt");
curl_setopt($ch, CURLOPT_REFERER, $referer);
curl_setopt($ch,CURLOPT_HTTPHEADER,array("Expect:")); // << add this line.
$result = curl_exec ($ch);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...