Автозаполнение

S
На сайте с 07.01.2012
Offline
39
1082

Привет.

Делаю, я заполнение сайта, через CURL (POST), запросы отсылаю, сервер их принимает, все отлично. Но есть там 4 поля таких, а name у них однаковое files[] (массив походу), ну вот, мне нужно в каждое из них передать параметр. Вот, мой код:

$url = "http://site.ru/";


$post['name'] = 'test';
$post['image'] = '@C:/AppServ/www/images/20.jpg';
$post['files[]'] = '@C:/AppServ/www/images/21.jpg';
$post['files[]'] = '@C:/AppServ/www/images/22.jpg';
$post['files[]'] = '@C:/AppServ/www/images/23.jpg';
$post['files[]'] = '@C:/AppServ/www/images/24.jpg';

$cl = curl_init();
curl_setopt($cl, CURLOPT_URL, $url);
curl_setopt($cl, CURLOPT_RETURNTRANSFER,1);
curl_setopt($cl, CURLOPT_USERAGENT, 'Opera/9.80 (Windows NT 6.1; U; ru) Presto/2.2.15 Version/10.10');
curl_setopt($cl, CURLOPT_COOKIEJAR, $_SERVER['DOCUMENT_ROOT'].'1.txt');
curl_setopt($cl, CURLOPT_COOKIEFILE, $_SERVER['DOCUMENT_ROOT'].'1.txt');
if(!empty($post)) {curl_setopt($cl, CURLOPT_POST, 1); curl_setopt($cl, CURLOPT_POSTFIELDS, $post);}else{curl_setopt($cl, CURLOPT_POST, 0);}
$ex=curl_exec($cl);
curl_close($cl);
echo $ex;

Ну, вот, видите пробуй вот так, но что-то не идет, как быть в таком случае?

А вот, еще HTML код того сайта:


<div><input type="file" name="files[]" /> </div>
<div><input type="file" name="files[]" /> </div>
<div><input type="file" name="files[]" /> </div>
<div><input type="file" name="files[]" /> </div>
S
На сайте с 07.01.2012
Offline
39
#1

Вот, ошибку вывел через curl_error: failed creating formpost data

siv1987
На сайте с 02.04.2009
Offline
427
#2
Slient:
$post['files[]'] =

lol.

$post['files'][] = '@C:/AppServ/www/images/21.jpg';

$post['files'][] = '@C:/AppServ/www/images/22.jpg';

S
На сайте с 07.01.2012
Offline
39
#3

siv1987

Сделал так, но не работает, та же ошибка.

$post['files'][] = '@C:/AppServ/www/torrents/images/22.png';
$post['files'][] = '@C:/AppServ/www/torrents/images/22.png';
$post['files'][] = '@C:/AppServ/www/torrents/images/23.png';
$post['files'][] = '@C:/AppServ/www/torrents/images/24.png';
siv1987
На сайте с 02.04.2009
Offline
427
#4

http://forums.phpfreaks.com/index.php?topic=125783.0

light893:

I was referencing the location incorrectly
S
На сайте с 07.01.2012
Offline
39
#5

Да какие пути прописывать я только не пробовал...

siv1987
На сайте с 02.04.2009
Offline
427
#6

$post = http_build_query( $post );

$cl = curl_init();

или вручную попробуйте строку составить

$post = "name=test&image=url_to_image&file[]=url_toFile1&file[]=url_toFile2";

$cl = curl_init();

---------- Добавлено 20.08.2012 в 20:01 ----------

Потыкал я этот курл, вот так вроде получилось


<?php

$url = "http://localhost/9.php";

$post['name'] = 'test';
$post['image[1]'] = '@Z:/home/localhost/www/5.txt';
$post['image[2]'] = '@Z:/home/localhost/www/5.txt';
$cl = curl_init();
curl_setopt($cl, CURLOPT_URL, $url);
curl_setopt($cl, CURLOPT_RETURNTRANSFER,1);
curl_setopt($cl, CURLOPT_USERAGENT, 'Opera/9.80 (Windows NT 6.1; U; ru) Presto/2.2.15 Version/10.10');
curl_setopt($cl, CURLOPT_COOKIEJAR, $_SERVER['DOCUMENT_ROOT'].'1.txt');
curl_setopt($cl, CURLOPT_COOKIEFILE, $_SERVER['DOCUMENT_ROOT'].'1.txt');
if(!empty($post)) {
curl_setopt($cl, CURLOPT_POST, 1);
curl_setopt($cl, CURLOPT_POSTFIELDS, $post);
}
else{
curl_setopt($cl, CURLOPT_POST, 0);
}
$ex=curl_exec($cl);
curl_close($cl);
echo $ex;
?>


$_POST
Array
(
[name] => test
)
$_FILES
Array
(
[image] => Array
(
[name] => Array
(
[1] => 5.txt
[2] => 5.txt
)

[type] => Array
(
[1] => text/plain
[2] => text/plain
)

[tmp_name] => Array
(
[1] => Z:\tmp\phpC2E7.tmp
[2] => Z:\tmp\phpC2E8.tmp
)

[error] => Array
(
[1] => 0
[2] => 0
)

=> Array
(
[1] => 8366
[2] => 8366
)

)

)
S
На сайте с 07.01.2012
Offline
39
#7

Пробую, итак, результат тот-же.

siv1987
На сайте с 02.04.2009
Offline
427
#8

Я вам показал рабочий пример с его результатом. Проверьте еще раз правильность кода, смотрите чтобы все файлы реально существовали. В поиске еще советуют на винде попробовать экранированные слеши - c:\\file (хотя у меня работало и без). Посмотрите в сторону курла, может версия старая с багами.

http://stackoverflow.com/questions/6805876/curl-error-when-uploading-file-failed-creating-formpost-data

IL
На сайте с 20.04.2007
Offline
435
#9

Slient, попробуйте убрать вообще все файлы.. и по одному добавлять. Добиться, чтоб работала загрузка без файлов, затем для image без files[]. Затем с files разбираться. На каком именно поле появляется ошибка про formpost data? Как упомянул siv1987, Ещё раз проверить, что файлы существуют и проверить версию CURL-а.. ранние версии некорректно работали с массивами.

Ну и на всякий случай..

$post['files[0]']='@C:/AppServ/www/torrents/images/22.png'; // дальше по аналогии

p.s. siv1987 специально для Вас подготовил рабочий пример.. "ну сделайте же что-нибудь" (c) самостоятельно..

... :) Облачные серверы от RegRu - промокод 3F85-3D10-806D-7224 ( http://levik.info/regru )

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий