[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Отправить файл через curl
fire
Пробую отправить файл через курл


$file = array('file' => "@".realpath('my.jpg').";type=image/jpeg" );
$test = curlPOST($file, "http://site.ru/upload/", "http://site.ru", "c.txt" ,'', 60, 1);
echo $test;


function curlPOST($post_data, $url, $referrer='', $cookie_file='', $proxy='', $timeout=60, $header=0) {
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_USERAGENT, "Opera/9.10 (Windows NT 5.1; U; en)");
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_TIMEOUT, $timeout);
curl_setopt($ch, CURLOPT_ENCODING,'gzip,deflate');
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-type: image/jpeg'));
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);
if($referrer) curl_setopt($ch, CURLOPT_REFERER, $referrer);
if($header) curl_setopt($ch, CURLOPT_HEADER, 1);
if($proxy) {curl_setopt($ch, CURLOPT_PROXY, $proxy);
curl_setopt ($ch, CURLOPT_PROXYTYPE, CURLPROXY_SOCKS5);
//curl_setopt($ch, CURLOPT_PROXYUSERPWD, "user:pass");
//curl_setopt($ch, CURLOPT_PROXYAUTH, 1);

}
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
if($cookie_file) {
curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_file);
curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file);
}
$content=curl_exec($ch);
curl_close($ch);
return $content;
}


В ответ получаю белый экран, если пробывать без ;type=image/jpeg то получаю ошибку что файл не загружен. На самом сайте загрузка происходит через ajax, файл есит, куки нужные есть, что не так ? Видел в гугле подобную проблему, но так и не нашел решения.



Спустя 1 час, 5 минут, 33 секунды (23.03.2012 - 01:50) killer8080 написал(а):

Спустя 3 часа, 20 минут, 42 секунды (23.03.2012 - 05:10) fire написал(а):
Примерно так и делаю же, добавил еще вывод ошибки курла, если с файлом писать тип ;type=image/jpeg то вылетает ошибка - failed creating formpost data(26). Если без то пишет что файл не загружен. Вот дам запроса http://pastebin.com/8ajmnWrx тот кей что там есть заранее спарсен, пробывал е без него (вручную) файл тоже нормально заливался.

Спустя 7 часов, 8 минут, 55 секунд (23.03.2012 - 12:19) killer8080 написал(а):
выкинь это, так работать не будет
    curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-type: image/jpeg'));

Спустя 4 минуты (23.03.2012 - 12:23) fire написал(а):
Оно и без него не работает, добавил в ходе эксперементов smile.gif

Спустя 1 минута, 36 секунд (23.03.2012 - 12:25) killer8080 написал(а):
Цитата (fire @ 23.03.2012 - 11:23)
Оно и без него не работает

работает, только что проверил smile.gif
Может проблема в обработчике?

Спустя 14 минут, 26 секунд (23.03.2012 - 12:39) fire написал(а):
На свой обработчик (как в примере выше) файл вроде как приходит, но на нужный сервер залить не выходит, хотя вручную все нормально.

Читал тут http://ajaxblog.ru/356 что у человека тоже не загружался файл, у него на хостинге перед Apache стоял Nginx (на тот сервер что я шлю он тоже стоит) он решил вопрос добавлением type что у меня вызывает ошибку курла.

Спустя 45 минут, 6 секунд (23.03.2012 - 13:24) killer8080 написал(а):
fire
может там нужна авторизация для загрузки?

Спустя 4 минуты (23.03.2012 - 13:28) fire написал(а):
Нужна, я авторизировался предварительно. Думаю что проблема именно в mimetype файла, потому как на сервере идет проверка типа файла а я когда добавляю type у меня вывливаеться ошибка курла, что мол не правильный запрос.

Спустя 10 минут, 48 секунд (23.03.2012 - 13:39) killer8080 написал(а):
Странно, у меня майм тип прекрасно добавляется blink.gif
Попробуй установить fiddler и задай курлу прокси 127.0.0.1:8888. Там можно будет увидеть что отправляется в запросе.

Спустя 22 минуты, 10 секунд (23.03.2012 - 14:01) fire написал(а):
Цитата
Странно, у меня майм тип прекрасно добавляется 
Попробуй установить fiddler и задай курлу прокси 127.0.0.1:8888. Там можно будет увидеть что отправляется в запросе.

В логе тип нормально нормально определися, тогда вообще не пойму в чем проблема.

Спустя 1 минута, 36 секунд (23.03.2012 - 14:03) killer8080 написал(а):
fire
а куки правильно передает?

Спустя 3 минуты, 36 секунд (23.03.2012 - 14:06) fire написал(а):
Цитата
а куки правильно передает?

правильно, там таже сессия которую получил при авторизации, перед этим делаеться еще пару запросов, там все норм

Спустя 13 минут, 38 секунд (23.03.2012 - 14:20) killer8080 написал(а):
Я тут сравнил заголовки курла и оперы. Отличия:
Курл шлет заголовок Expect: 100-continue, и в filename передает полный путь на локалке к файлу, а опера только имя. Фиг его знает, вроде все должно работать. Попробуй через сокеты или file_get_contents, отправить файл.

Спустя 10 минут, 31 секунда (23.03.2012 - 14:31) killer8080 написал(а):
Проверил курл на связке nginx+apache через проксю, все работает!

Спустя 22 минуты, 12 секунд (23.03.2012 - 14:53) fire написал(а):
Убирал Expect: 100-continue из заголовков в курле, не прокатило. Попробывал через через сокеты отправить, не вышло sad.gif Могу отправить полный скрипт со всеми данными в пм, может я что то пропустил, хз.

Спустя 3 часа, 7 минут, 6 секунд (23.03.2012 - 18:00) fire написал(а):
Ап, проблема так и не решилась sad.gif Пробывал удалять все заголовки кроме host и cookie через tamper data, файл успешно грузиться, при любом значении key в ручную тоже все нормально работает.

Если в Fiddler попробывать повторить оригинальный запрос (кнопка Replay) то получаю ошибку что файл не загружен так же как и скриптом.

Спустя 1 час, 24 минуты, 28 секунд (23.03.2012 - 19:24) killer8080 написал(а):
fire
покажи обработчик, думаю проблема в нем.

Спустя 44 минуты, 31 секунда (23.03.2012 - 20:09) fire написал(а):
Отправил весь скрипт в пм.

Спустя 12 минут, 51 секунда (23.03.2012 - 20:22) Игорь_Vasinsky написал(а):
Свернутый текст
секретные разработки видимо...

Спустя 1 час, 5 минут, 28 секунд (23.03.2012 - 21:27) killer8080 написал(а):
fire
браузер шлет куку betar, в ней зашифрован json. Походу она добавляется js скриптом. Ищи откуда она рождается, думаю дело в ней. Других отличий не вижу.

Спустя 2 часа, 10 минут, 53 секунды (23.03.2012 - 23:38) fire написал(а):
Что то то эта кука у меня вообще не где не появляеться, сколько долблюсь ниразу ее не видел sad.gif

Спустя 2 часа, 26 минут, 2 секунды (24.03.2012 - 02:04) killer8080 написал(а):
Цитата (fire @ 23.03.2012 - 22:38)
Что то то эта кука у меня вообще не где не появляеться, сколько долблюсь ниразу ее не видел

вот что шлет браузер, обрати внимание на заголовок куки
POST /ajaxfileupload/?key=116638 HTTP/1.0
User-Agent: Opera/9.80 (Windows NT 6.1; U; ru) Presto/2.10.229 Version/11.61
Host: ********
Accept: text/html, application/xml;q=0.9, application/xhtml+xml, image/png, image/webp, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1
Accept-Language: ru-RU,uk;q=0.9,ru;q=0.8,cs;q=0.7,bg;q=0.6,en;q=0.5
Accept-Encoding: gzip, deflate
Referer: http://******/add/
Cookie: PHPSESSID=njruv32eurp2tomad1cqc3jor4; __utma=100151304.1544297382.1332522712.1332522712.1332524745.2; __utmb=100151304.4.10.1332524745; __utmc=100151304; __utmz=100151304.1332522712.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none); betar=%7B%2242%22%3A2%7D
Connection: Keep-Alive
Content-Length: 64887
Content-Type: multipart/form-data; boundary=----------EBccvCQoKp6a61MjwmAyDR

------------EBccvCQoKp6a61MjwmAyDR
Content-Disposition: form-data; name="fileToUpload"; filename="myBestcar.jpg"
Content-Type: image/jpeg

�����JFIF������ 5533;����

Спустя 14 часов, 11 минут, 54 секунды (24.03.2012 - 16:16) fire написал(а):
Решил проблему smile.gif Правда так и не разабрался почему файл не загружался, нашел другое место где можно было загрузить файл.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.