Home > Backend Development > PHP Tutorial > 使用curl 提交表单(多维数组+文件)数据到服务器的有关问题

使用curl 提交表单(多维数组+文件)数据到服务器的有关问题

WBOY
Release: 2016-06-13 12:33:09
Original
848 people have browsed it

使用curl 提交表单(多维数组+文件)数据到服务器的问题
我在本地搭了一个测试服务器,Apache+PHP,想使用curl自动提交表单数据到远程服务器。

远程服务器表单有两项数据需要提交:
1、input file: 要求传图片
2、checkbox: 会有多个按钮被选中

问题:
运行时下面程序时checkbox数组会被转成字符串,程序报错如下:
Array to string conversion 

主要代码如下:

    $post_url = "http://domain.com/post.php";<br />
    $post_data = array(<br />
        'color' => array('red', 'green', 'blue'),<br />
        'img' => "@d:\image.jpg"<br />
    );<br />
<br />
    $ch = curl_init();<br />
    curl_setopt($ch, CURLOPT_URL, $post_url);<br />
    curl_setopt($ch, CURLOPT_POST, true);  <br />
    curl_setopt($ch, CURLOPT_POSTFIELDS, ($post_data));<br />
    if (false === curl_exec($ch)) {<br />
        echo "Curl_error: " . curl_error($ch);<br />
    }<br />
    curl_close($ch);
Copy after login


尝试过:
1、如果用http_build_query处理$post_data,那么color数组就可以正确的传到服务器,但是文件也会被当成一般query参数,从而上传失败。
2、如果不使用http_build_query,文件可以正确上传,但是在服务器抓到color数组的值就是"Array",并提示"Array to string conversion"错误。
3、我在php.net上看curl手册,发现有个家伙跟我的情况有点类似,但是他使用的是关联数组,所以可以绕弯,类似
$post_data = array("method" => $_POST["method"],<br />
                    "mode" => $_POST["mode"],<br />
                    "product[name]" => $_POST["product"], <br />
                    "product[cost]" => $_POST["product"]["cost"], <br />
                    "product[thumbnail]" => "@{$_FILES["thumbnail"]["tmp_name"]}");
Copy after login

即可解决,可是我的情况是索引数组,模仿他的样子写了之后仍然无效。


请教各位朋友是否知道如何解决?

Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template