【发布时间】:2014-04-04 16:36:47
【问题描述】:
我的公司有一个 html 表单来发送变量和更新图像 (jpeg) 到服务器,我尝试使用 curl 自动化它,但卡住了。我可以发送变量,但不能发送图像。
我使用“篡改数据”firefox 并注意到我的表单将以下变量发送到服务器:
-----------------------------291231848620019\r\nContent-Disposition: form-data; name="pin"\r\n\r\ndf8794b1ec63c7094f6498f7a1322bcc\r\n-----------------------------291231848620019\r\nContent-Disposition: form-data; name="yourdata"\r\n\r\nonly test\r\n-----------------------------291231848620019\r\nContent-Disposition: form-data; name="your_file"; filename="chansy.jpg"\r\nContent-Type: image/jpeg\r\n\r\n{content-of-image-file-here}\r\n-----------------------------291231848620019\r\nContent-Disposition: form-data; name="birth_date[]"\r\n\r\n1\r\n-----------------------------291231848620019\r\nContent-Disposition: form-data; name="birth_date[]"\r\n\r\n1\r\n-----------------------------291231848620019\r\nContent-Disposition: form-data; name="birth_date[]"\r\n\r\n1970\r\n-----------------------------291231848620019\r\nContent-Disposition: form-data; name="your_email"\r\n\r\nkrunker@asia.com\r\n-----------------------------291231848620019\r\nContent-Disposition: form-data; name="code"\r\n\r\n\r\n-----------------------------291231848620019\r\nContent-Disposition: form-data; name="pass"\r\n\r\npass_sample\r\n-----------------------------291231848620019\r\nContent-Disposition: form-data; name="act"\r\n\r\nUpdate Changes\r\n-----------------------------291231848620019\r\nContent-Disposition: form-data; name="your_name"\r\n\r\njust me\r\n-----------------------------291231848620019--\r\n
这是我在数组 postfields 上使用的代码:
$img=file_get_contents($filename);
$data = array('pin' => $pin, 'yourdata' => $_POST['yourdata'], 'your_file'=>$img, 'filename' =>$filename, 'Content-Type' => 'image/jpeg', 'birth_date[]' => $_POST['birth_date'], 'birth_date[]' => $_POST['birth_month'], 'birth_date[]' => $_POST['birth_year'], 'your_email' => $_POST['your_email'], 'pass' => $_POST['pass'], 'act' => 'Update changes', 'your_name' => $_POST['your_name']);
$ch = curl_init();
curl_setopt($ch, CURLOPT_VERBOSE, 0);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_COOKIE, $cookie);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch , CURL_HTTPHEADER , "Content-Type: multipart/form-data" );
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt($ch, CURLOPT_REFERER, "http://internalweb.com/");
curl_setopt($ch, CURLOPT_URL, "http://internalweb.com/profile");
$page = curl_exec($ch);
结果,当我运行我的脚本时,它可以更新这些变量,但图像没有运气......我很困惑......我应该怎么做才能放入变量?
我正在从谷歌学习一切,现在我被困住了,因为我没有任何深度编程知识,你能帮我把图像放在 $data 数组中吗?
我试图查看以下线程: multipart/form-data into array not processing multipart/form-data php curl Posting raw image data as multipart/form-data in curl
注意: 我试着听从哈桑的建议,但还是不行。有谁知道如何转换这个:
Content-Disposition: form-data; name="your_file"; filename="merc.jpg"
Content-Type: image/jpeg
$contentfile
卷入 $data 数组?
【问题讨论】:
标签: php image curl multipartform-data