Загрузка изображений с библиотекой curl - PullRequest
1 голос
/ 29 декабря 2011

Не общий вопрос, я сделал тысячу загрузок с изображениями, но я не могу справиться с этим. Предположим, что проблема не в реферере, ни в пользовательском агенте, ни в кодировании, ни в сеансе и так далее. Ошибка, которую возвращает страница, ясна: я знаю, что проблема в том, что я не могу обработать, чтобы отправить «Content-type: image / jpeg» для файла. Вот запрос, который я получил с «живыми заголовками httpd», которые я пытаюсь смоделировать:

POST /Shared/Webservices/Uploader.ashx HTTP/1.1

Host: ***.it

User-Agent: Mozilla/5.0 (Ubuntu; X11; Linux i686; rv:8.0) Gecko/20100101 Firefox/8.0

Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8

Accept-Language: en-us,en;q=0.5

Accept-Encoding: gzip, deflate

Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7

DNT: 1

Connection: keep-alive

Referer: ***.it



Content-Type: multipart/form-data; boundary=---------------------------7306436807702238541262456293

Content-Length: 51702

-----------------------------7306436807702238541262456293

Content-Disposition: form-data; name="vert"



au

-----------------------------7306436807702238541262456293

Content-Disposition: form-data; name="userfile"; filename="1.jpg"

Content-Type: image/jpeg


binary dataaaaaaaaaaa

-----------------------------7306436807702238541262456293--

Вот виновный код:

        $url = $urlwhereuploadto;
        $file = $filepath;

        $headers['Content-Type'] = "multipart/form-data; boundary=AaB03x---------------";
        $headers['Content-Disposition'] = 'form-data; name="userfile"; filename="'.basename($file).'"';

        $data['vert'] = "au";
        $data['userfile'] = "@$file;type=image/jpeg;";

        $ch = curl_init();
        curl_setopt($ch, CURLOPT_HEADER, $headers);
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.1; it; rv:1.8.1.13) Gecko/20080311 Firefox/2.0.0.13");
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($ch, CURLOPT_POST, 1);
        curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
        curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
        $result = curl_exec($ch);

        die($result);

Есть идеи ??

1 Ответ

2 голосов
/ 29 декабря 2011

Решение: просто удалите строку, где я устанавливаю Content-disposition. Завитки уже установлены. (однако я всегда устанавливаю это в других моих пауках ...)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...