在开发商城项目中,商城的展示端是一个服务器,只存储部分商品且所有商品信息都是从另一个服务器中获取的。所以有时编辑商品需要将数据保存到总商品的服务器中,其他的商品信息都能直接保存,图片需要先上传到商品服务器中,获取路径在将图片路径保存到商品服务器中。
这里使用curl来进行上传。注:上传的图片需要使用完整的路径
$target = "D:\image.jpg"; //上传的图片的完整路径
$curl = curl_init(); //初始化curl
$post_data = array(
"download" => new CURLFile($target) //这个写法是php5.5之后的版本写法,将图片当做上传资源
);
curl_setopt($curl, CURLOPT_URL, TRAN_URL."/admin.php?s=/file/uploadPicture"); //上传的接口
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE); //访问HTTPS时不检查ssl证书
curl_setopt($curl, CURLOPT_POST, 1); //post提交
curl_setopt($curl, CURLOPT_POSTFIELDS, $post_data);
$result = curl_exec($curl);
curl_close($curl); //关闭
print_r($result);
接收端
function uploadPicture(){
if($_FILES){
$file = $_FILES['download']; //可以直接获取图片的上传信息
$upload = array(
'type' => $file['type'],
'name' => $file['name'],
'file' => $file['tmp_name'],
);
$info = $Upload->upload($upload); //再根据商品服务器中的上传方式上传即可
}
}
这之前有个问题,就是不能把图片当做一个上传资源传到服务器中,导致没办法去使用原来商品图片的上传方式
$post_data = array('download'=>'@D:\image.jpg');
//之前使用的方式,但它只适用于5.5版本之前的,所以在接口那边一直获取不到上传资源