QQ咨询 官方微信

添加微信好友

官方小程序

百度小程序

微信小程序

头条小程序

关于我们

PHP基础

PHP CURL上传文件图片等

 admin  2023-05-24 21:49:34
搞curl上传图片,需要用到字节流上传,就是用file_get_content转成base64还是不行,参考下边的方法可以搞定

  1. /** 
  2.      * 上传图文消息内的图片获取URL 
  3.      * 
  4.      */ 
  5.     public function uploadImg(Request $request) { 
  6.         $data = [ 
  7.             'media'=>'@C:\Users\shuxiaoyuan\Pictures\22222.jpg'// PHP 5.5 之前用法 
  8.             'media' =>new \CURLFile(realpath('C:\Users\shuxiaoyuan\Pictures\22222.jpg')) // PHP 5.5 之后用法 
  9.         ]; 
  10.         return $this->wechat->uploadimg($data); 
  11.     } 
  12.     /** 
  13.      * 上传图文消息内的图片获取URL 
  14.      * @param array $data  PHP 5.5 之前采用 @ 符号来表示上传资源, PHP 5.5 之后采用 new \CURLFile(realpath('222.jpg')) 
  15.      * @param type 类型:图片:image 语音:voice 视频:video 缩略图:thumb 
  16.      * @return string 
  17.      * 
  18.      */ 
  19.     public function uploadimg($data) { 
  20.         $url = self::API_URL_PREFIX . '/media/uploadimg?access_token=' . $this->AccessToken; 
  21. //        $url .= '&type=image'; 
  22.         return $this->httpPost($url, $data, true); 
  23.     } 
  24.     /** 
  25.      * POST 请求 
  26.      * 
  27.      * @param string $url 
  28.      * @param array $param 
  29.      * @param boolean $post_file 是否文件上传 
  30.      * @return string content 
  31.      */ 
  32.     private function httpPost($url, $param, $post_file = false) { 
  33.         $oCurl = curl_init(); 
  34.         if (stripos($url, "https://") !== FALSE) { 
  35.             curl_setopt($oCurl, CURLOPT_SSL_VERIFYPEER, FALSE); 
  36.             curl_setopt($oCurl, CURLOPT_SSL_VERIFYHOST, false); 
  37.             curl_setopt($oCurl, CURLOPT_SSLVERSION, 1); //CURL_SSLVERSION_TLSv1 
  38.         } 
  39.         if (is_string($param) || $post_file) { 
  40.             $strPOST = $param; 
  41.         } else { 
  42.             $aPOST = array(); 
  43.             foreach ($param as $key => $val) { 
  44.                 $aPOST[] = $key . "=" . urlencode($val); 
  45.             } 
  46.             $strPOST = join("&", $aPOST); 
  47.         } 
  48.         curl_setopt($oCurl, CURLOPT_URL, $url); 
  49.         curl_setopt($oCurl, CURLOPT_RETURNTRANSFER, 1); 
  50.         curl_setopt($oCurl, CURLOPT_POST, true); 
  51.         curl_setopt($oCurl, CURLOPT_POSTFIELDS, $strPOST); 
  52.         curl_setopt($oCurl, CURLOPT_TIMEOUT, 10); 
  53.         $sContent = curl_exec($oCurl); 
  54.         $aStatus = curl_getinfo($oCurl); 
  55.         curl_close($oCurl); 
  56.         if (intval($aStatus["http_code"]) == 200) { 
  57.             return $sContent; 
  58.         } else { 
  59.             return false
  60.         } 
  61.     } 

我自己的实际用法:

  1. $imgurl = dirname(__FILE__)."/images/123.jpg"
  2. $data = array( 
  3.     'material_file' => new \CURLFile(realpath($imgurl)), 
  4. ); 
  5. $ch = curl_init();   
  6. curl_setopt($ch, CURLOPT_URL, $uploadUrl);   
  7. curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); 
  8. curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); 
  9. curl_setopt($ch, CURLOPT_POST, 1);   
  10. curl_setopt($ch, CURLOPT_POSTFIELDS, $data);   
  11. curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: multipart/form-data'));   
  12. curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
  13.  
  14. $res = curl_exec($ch);   
  15. curl_close($ch);  


 

¥ 打赏
×
如果您觉得文章帮助了您就打赏一下吧
非常感谢你的打赏,我们将继续分享更多优质内容,让我们一起创建更加美好的网络世界!

支付宝扫一扫打赏

微信扫一扫打赏

本文《PHP CURL上传文件图片等》发布于石头博客文章,作者:admin,如若转载,请注明出处:https://www.pweb123.com/html/php/948.html,否则禁止转载,谢谢配合!

文章点评

我来说两句 已有0条评论
点击图片更换

添加微信好友

添加微信好友

微信小程序

百度小程序