PHP 注意:使用 CURL 到远程服务器上的 post 数据时,数组到字符串的转换
PHP Notice: Array to string conversion while using CURL to post data on remote server
这是我要 post 到远程服务器的数据数组。
Array
(
[petTitle] => test
[petType] => 2
[breedtype] => dsfsdf
[dateOfBirth] => 14 Apr 2016
[postcode] => 390015
[isPriceNegotiable] => False
[price] => test
[isPublished] => 1
[petQualities] => 2
[petDescription] => test
[username] => XXXX@gmail.com
[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 Notice: Array to string conversion".
我是这样使用的: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);
有了这个请求,我可以 post 文本数据。但不知何故我无法上传图片并在数据库中添加条目。
我们将不胜感激任何帮助。
通知被触发是因为您传递给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 ...
替换为相应文件的路径。
这是我要 post 到远程服务器的数据数组。
Array
(
[petTitle] => test
[petType] => 2
[breedtype] => dsfsdf
[dateOfBirth] => 14 Apr 2016
[postcode] => 390015
[isPriceNegotiable] => False
[price] => test
[isPublished] => 1
[petQualities] => 2
[petDescription] => test
[username] => XXXX@gmail.com
[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 Notice: Array to string conversion".
我是这样使用的: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);
有了这个请求,我可以 post 文本数据。但不知何故我无法上传图片并在数据库中添加条目。
我们将不胜感激任何帮助。
通知被触发是因为您传递给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 ...
替换为相应文件的路径。