贴一段醍醐灌顶的话:
逻辑很简单,设置POST变量$post_data,其中upload指向需要发送的文件。这里要注意,我们之前使用POST都是发送一个字符串,然后在服务器端使用file_get_contents(“php//input”)来获取该字符串,和这里的用法不一样,其实POST也可以像GET一样,发送键值对。在服务端有一个超级全局变量$_POST可以像$_GET一样,获取相应的POST数据的值。需要注意的是,上传文件的变量不是存在着$_POST中,而是在$_FILES中;
curl_file
<?php function curlRequest($url,$data=''){ $ch=curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);//不验证证书 if(!empty($data)){ curl_setopt($ch, CURLOPT_POST, 1); // curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data)); curl_setopt($ch, CURLOPT_POSTFIELDS, $data); } $output=curl_exec($ch); $errno=curl_errno($ch); curl_close($ch); return json_decode($output,true); } //测试 $url="http://www.luoqiusa.top/wx/upload.php"; // $data=array('name'=>'yolo'); $data=array("myfile"=>"@/var/www/html/wx/upload/0.jpg");//'myfile'是自己定义的文件名,/var/www/html/wx/upload/0.jpg是服务器本地文件地址 $res=curlRequest($url,$data); print_r($res);
upload.php
<?php if(isset($_FILES['myfile']['tmp_name'])){ $jsonObj='{"name":"yolo_bean","age":23,"gender":"female"}'; print_r($jsonObj); }