|
| Дата |
|
USD/RUB | 90.7493 | BTC/USD | 69769.1299 |
|
|
|
Скрипты, программы и технические решения Обсуждаем скрипты, программы и новые технологии. |
13.03.2012, 04:46
|
#1
|
$400
Регистрация: 17.05.2009
Сообщений: 13,855
Бабло: $1885685
|
Опять 25 - curl multipart/form-data
по сути продолжение темы http://www.gofuckbiz.com/showthread.php?t=6594
вся пачка данных передается, а картинка не передается на сервак
это http запросы, когда руками
PHP код:
Content-Disposition: form-data; name="image[1]" file Content-Disposition: form-data; name="image[1]"; filename="n_7327.jpg" Content-Type: image/jpeg yOya?Exif
пишу такой массив
PHP код:
$postdata = array( ... ... 'image[1]'=>'file', 'image[1]'=>'@'.realpath('images/'.trim($item[0])), ... ... );
curl_setopt($cr, CURLOPT_POST, 1); curl_setopt( $cr, CURLOPT_UPLOAD, 0 ); curl_setopt($cr, CURLOPT_POSTFIELDS, $postdata); curl_setopt($cr, CURLOPT_HTTPHEADER, array("User-Agent: Mozilla/5.0 (Windows NT 5.1; rv:8.0.1) Gecko/20100101 Firefox/8.0.1", "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8", "Accept-Language: ru-ru,ru;q=0.8,en-us;q=0.5,en;q=0.3", "Accept-Encoding: gzip, deflate", "Accept-Charset: windows-1251,utf-8;q=0.7,*;q=0.7", "Connection: keep-alive")); curl_setopt($cr, CURLOPT_FOLLOWLOCATION, 1); curl_setopt($cr, CURLOPT_RETURNTRANSFER, 1); рефер, урл curl_setopt($cr, CURLOPT_ENCODING, 'gzip,deflate'); curl_setopt($cr, CURLOPT_COOKIEFILE, "cookie.txt"); curl_setopt($cr, CURLOPT_COOKIEJAR, "cookie.txt"); $r = curl_exec($cr); curl_close ($cr);
и не передает
интересно, что руками name="image[1]" передается 2 раза подряд
в самой форме там два поля с одинаковыми именами, одно хайден
в массиве так сделать нельзя
да и в самом PHP тоже никак не получишь $_POST["image[1]"] 2 разные переменные
мож там не пхп, думал из-за этого
у кого есть какие мысли?
Последний раз редактировалось digg; 13.03.2012 в 04:52.
|
|
|
13.03.2012, 05:30
|
#2
|
автоматизирую интернеты
Регистрация: 05.07.2009
Адрес: chesser.ru
Сообщений: 3,362
Бабло: $470735
|
а если:
CURLOPT_POSTFIELDS => http_build_query($postdata)
|
|
|
13.03.2012, 05:57
|
#3
|
$400
Регистрация: 17.05.2009
Сообщений: 13,855
Бабло: $1885685
ТС -->
|
ТС
сам пост то проходит и строка введенной капчи и все остальные поля
все кроме картинки
|
|
|
13.03.2012, 06:02
|
#4
|
Senior Member
Регистрация: 18.05.2009
Сообщений: 928
Бабло: $196595
|
> у кого есть какие мысли?
Попробуй передавать в CURLOPT_HTTPPOST список пар.
http://curl.haxx.se/libcurl/c/curl_e...URLOPTHTTPPOST
Не знаю, как в PHP, в python именно так оно работает.
__________________
TgScan - узнай Telegram группы, в которых состоит человек
|
|
|
13.03.2012, 06:18
|
#5
|
$400
Регистрация: 17.05.2009
Сообщений: 13,855
Бабло: $1885685
ТС -->
|
ТС
и так пробовал
PHP код:
curl_setopt($cr, CURLOPT_POSTFIELDS, $postdata);
curl_setopt($cr, CURLOPT_HTTPPOSTFILEFIELDS, array("image[1]" => 'images/'.trim($item[0])));
тоже не срабатывает
|
|
|
13.03.2012, 06:58
|
#6
|
$400
Регистрация: 17.05.2009
Сообщений: 13,855
Бабло: $1885685
ТС -->
|
ТС
похоже нашел в чем глюк
сделал простенький приемник этого пакета
PHP код:
print_r($_POST); print_r($_FILES);
и на него весь массив посылаю
и прикол в том, что получает вот такой массив
PHP код:
Array ( [image] => Array ( [name] => Array ( [1] => 1052.jpg )
[type] => Array ( [1] => image/jpeg )
[tmp_name] => Array ( [1] => C:\Program Files\xampp\tmp\php5E.tmp )
[error] => Array ( [1] => 0 )
[size] => Array ( [1] => 26668 )
)
)
вместо [image[1]] передает просто [image]
а в [data] => Array из $_POST его вообще нет
вопрос - как передать в названии переменной файла квадратную скобку?
[
|
|
|
13.03.2012, 07:03
|
#7
|
Senior Member
Регистрация: 08.07.2007
Сообщений: 177
Бабло: $34565
|
может массивом?
PHP код:
$image['image[1]'][] = 'file'; $image['image[1]'][] = '@'.realpath('images/'.trim($item[0]));
а потом сложить с этим массивом $postdata и отправить
Последний раз редактировалось incognito; 13.03.2012 в 07:10.
|
|
|
13.03.2012, 07:21
|
#8
|
$400
Регистрация: 17.05.2009
Сообщений: 13,855
Бабло: $1885685
ТС -->
|
ТС
проблема в том, что в самих названиях пхп экранирует квадратные скобки
http://php.net/manual/ru/function.http-build-query.php
Цитата:
5.1.3 Квадратные скобки экранируются.
|
получается, что в таком виде должен передаваться двухмерный массив
Последний раз редактировалось digg; 13.03.2012 в 07:36.
|
|
|
13.03.2012, 07:39
|
#9
|
$400
Регистрация: 17.05.2009
Сообщений: 13,855
Бабло: $1885685
ТС -->
|
ТС
если задать так
'image[1]'=>'@'.realpath('images/'.trim($item[0])),
'image[2]'=>'@'.realpath('images/'.trim($item[0])),
'image[3]'=>'@'.realpath('images/'.trim($item[0])),
в таком виде
PHP код:
Array ( [image] => Array ( [1] => Array ( [name] => 2283.jpg [type] => image/jpeg ... [2] =>Array ( [name] ...
а выдает вот так:
PHP код:
Array ( [image] => Array ( [name] => Array ( [1] => 2283.jpg [2] => 2283.jpg [3] => 2283.jpg )
[type] => Array ( [1] => image/jpeg [2] => image/jpeg [3] => image/jpeg )
переставляет не туда ячейки
|
|
|
13.03.2012, 08:31
|
#10
|
Senior Member
Регистрация: 18.05.2009
Сообщений: 928
Бабло: $196595
|
Не, я имел в виду что-то типа:
Код:
array(
[0] -> array(
[0] ->"image[1]",
[1] -> "@/path/",
),
)
__________________
TgScan - узнай Telegram группы, в которых состоит человек
|
|
|
Опции темы |
|
Опции просмотра |
Линейный вид
|
|