Примечание PHP: преобразование массива в строку при использовании CURL для размещения данных на удаленном сервере

Это массив данных, которые я хочу опубликовать на удаленном сервере.

Array
(
[petTitle] => test
[petType] => 2
[breedtype] => dsfsdf
[dateOfBirth] => 14 Apr 2016
[postcode] => 390015
[isPriceNegotiable] => False
[price] => test
[isPublished] => 1
[petQualities] => 2
[petDescription] => test
[username] => [email protected]
[file] => Array
(
[0] => Array
(
[name] => Desert.jpg
[type] => image/jpeg
[tmp_name] => D:\xampp\tmp\php1F32.tmp
[error] => 0
[size] => 845941
)

[1] => Array
(
[name] => Koala.jpg
[type] => image/jpeg
[tmp_name] => D:\xampp\tmp\php1F62.tmp
[error] => 0
[size] => 780831
)

)

)

я использую cURL, Однако пока я отправляю этот массив с использованием CURLOPT_POSTFIELDS, это генерирует уведомление «Примечание PHP: преобразование массива в строку».

Я использую так: CURLOPT_POSTFIELDS => $data, Пожалуйста, обратитесь к запросу curl ниже:

$headers = array("Content-Type:multipart/form-data");
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => self::url,
CURLOPT_HEADER => true,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => $headers,
CURLOPT_ENCODING => "",
CURLOPT_TIMEOUT => 30,
CURLOPT_POST => 1,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => $data,
));
$response = curl_exec($curl);

с помощью этого запроса я могу опубликовать текстовые данные. Но почему-то я не могу загрузить изображение и добавить запись в базу данных.

Любая помощь в этом будет высоко оценена.

1

Решение

Уведомление сработало, потому что массив, который вы передали CURLOPT_POSTFIELDS имеет неправильный формат. Многоуровневый массив, который вы положили в file это причина.

Но массив вы положили в file не поможет вам загрузить любой файл. Так выглядит информация о загруженных файлах на целевом PHP-скрипте, но на стороне источника она выглядит иначе.

Заменить значение file с:

$data = array(
// ... all the text fields here
'file1' => new CURLFile('... path .../Desert.jpg', 'image/jpeg'),
'file2' => new CURLFile('... path .../Koala.jpg', 'image/jpeg'),
);

замещать ... path ... в приведенном выше коде с путями соответствующих файлов.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]