代码是基于ThinkPHP 3.2的,其他语言请自行实现,PHP版本为5.6
/** * 图片上传 * @Author Qianlong <87498106@qq.com> * @PersonSite http://dev.21ds.cn/ */ public function onlyUploadImage() { $upload = new \Think\Upload(); // 实例化上传类 $upload->maxSize = 3145728; // 设置附件上传大小 $upload->exts = array('jpg', 'bmp', 'png', 'jpeg'); // 设置附件上传类型 $upload->rootPath = './Uploads/'; // 设置附件上传根目录 $upload->savePath = ''; // 设置附件上传(子)目录 // 上传文件 $info = $upload->upload(); $access_token = $this->applet->getAccessToken(); $filename = '/webroot/Uploads/' . $info['file']['savepath'] . $info['file']['savename']; $postd['access_token'] = $access_token; $postd['type'] = 2; $file['realpath'] = $filename; $file['name'] = 'multipartFile'; $file['type'] = $info['file']['type']; $status = $this->Https_request('https://openapi.baidu.com/file/2.0/smartapp/upload/image', $postd,null, $file); if (!empty($status)) { switch ($status['errno']) { case '0': $returnData['code'] = 200; $returnData['data'] = $status['data']; $returnData['msg'] = '上传成功'; $this->BspReturn($returnData); break; case '47003': $returnData['code'] = -1; $returnData['data'] = ''; $returnData['msg'] = '图片格式无效'; $this->BspReturn($returnData); break; case '47000': $returnData['code'] = -1; $returnData['data'] = ''; $returnData['msg'] = '图片格式无效'; $this->BspReturn($returnData); break; default: $returnData['code'] = -1; $returnData['data'] = $status; $returnData['msg'] = '上传失败,请重试'; $this->BspReturn($returnData); break; } } else { $returnData['code'] = -1; $returnData['data'] = $status; $returnData['msg'] = '上传失败,请重试'; $this->BspReturn($returnData); } } public function Https_request($url, $data = null, $cookie = null, $file = null, $header = '') { $curl = curl_init(); curl_setopt($curl, CURLOPT_URL, $url); curl_setopt( $curl, CURLOPT_SSL_VERIFYPEER, FALSE ); curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE); //携带cookie文件 if (!empty($cookie)) { curl_setopt($curl, CURLOPT_COOKIEFILE, $cookie); //读取cookie } //携带头 if (!empty($header)) { curl_setopt($curl, CURLOPT_HTTPHEADER, $header); } //上传文件 if (!empty($file)) { $file_obj = new \CURLFile($file['realpath'], $file['type']); $data["{$file['name']}"] = $file_obj; } //发送post数据 if (!empty($data) && !isset($file_obj)) { curl_setopt($curl, CURLOPT_POST, 1); curl_setopt($curl, CURLOPT_POSTFIELDS, http_build_query($data)); } elseif (!empty($data)) { curl_setopt($curl, CURLOPT_POST, 1); curl_setopt($curl, CURLOPT_POSTFIELDS, $data); } curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); $output = curl_exec($curl); if (empty($output)) return 'no data'; curl_close($curl); return is_null(json_decode($output)) ? $output : json_decode($output, true); }