- /**
- * 上传图文消息内的图片获取URL
- *
- */
- public function uploadImg(Request $request) {
- $data = [
- 'media'=>'@C:\Users\shuxiaoyuan\Pictures\22222.jpg', // PHP 5.5 之前用法
- 'media' =>new \CURLFile(realpath('C:\Users\shuxiaoyuan\Pictures\22222.jpg')) // PHP 5.5 之后用法
- ];
- return $this->wechat->uploadimg($data);
- }
- /**
- * 上传图文消息内的图片获取URL
- * @param array $data PHP 5.5 之前采用 @ 符号来表示上传资源, PHP 5.5 之后采用 new \CURLFile(realpath('222.jpg'))
- * @param type 类型:图片:image 语音:voice 视频:video 缩略图:thumb
- * @return string
- *
- */
- public function uploadimg($data) {
- $url = self::API_URL_PREFIX . '/media/uploadimg?access_token=' . $this->AccessToken;
- // $url .= '&type=image';
- return $this->httpPost($url, $data, true);
- }
- /**
- * POST 请求
- *
- * @param string $url
- * @param array $param
- * @param boolean $post_file 是否文件上传
- * @return string content
- */
- private function httpPost($url, $param, $post_file = false) {
- $oCurl = curl_init();
- if (stripos($url, "https://") !== FALSE) {
- curl_setopt($oCurl, CURLOPT_SSL_VERIFYPEER, FALSE);
- curl_setopt($oCurl, CURLOPT_SSL_VERIFYHOST, false);
- curl_setopt($oCurl, CURLOPT_SSLVERSION, 1); //CURL_SSLVERSION_TLSv1
- }
- if (is_string($param) || $post_file) {
- $strPOST = $param;
- } else {
- $aPOST = array();
- foreach ($param as $key => $val) {
- $aPOST[] = $key . "=" . urlencode($val);
- }
- $strPOST = join("&", $aPOST);
- }
- curl_setopt($oCurl, CURLOPT_URL, $url);
- curl_setopt($oCurl, CURLOPT_RETURNTRANSFER, 1);
- curl_setopt($oCurl, CURLOPT_POST, true);
- curl_setopt($oCurl, CURLOPT_POSTFIELDS, $strPOST);
- curl_setopt($oCurl, CURLOPT_TIMEOUT, 10);
- $sContent = curl_exec($oCurl);
- $aStatus = curl_getinfo($oCurl);
- curl_close($oCurl);
- if (intval($aStatus["http_code"]) == 200) {
- return $sContent;
- } else {
- return false;
- }
- }
我自己的实际用法:
- $imgurl = dirname(__FILE__)."/images/123.jpg";
- $data = array(
- 'material_file' => new \CURLFile(realpath($imgurl)),
- );
- $ch = curl_init();
- curl_setopt($ch, CURLOPT_URL, $uploadUrl);
- curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
- curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
- curl_setopt($ch, CURLOPT_POST, 1);
- curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
- curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: multipart/form-data'));
- curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
- $res = curl_exec($ch);
- curl_close($ch);
文章点评