青草久久影院-青草久久伊人-青草久久久-青草久久精品亚洲综合专区-SM双性精跪趴灌憋尿调教H-SM脚奴调教丨踩踏贱奴

17站長網

17站長網 首頁 編程 PHP編程 查看內容

PHP非常實用下載遠程圖片的代碼示例

2022-12-27 20:07| 查看: 2546 |來源: 互聯網

/** *下載遠程圖片 *@paramstring$url圖片的絕對url *@paramstring$filepath文件的完整路徑(例如/www/images/test),此函數會自動根據圖片url和http頭信息確定 ...
/**
 * 下載遠程圖片
 * @param string $url 圖片的絕對url
 * @param string $filepath 文件的完整路徑(例如/www/images/test) ,此函數會自動根據圖片url和http頭信息確定圖片的后綴名
 * @param string $filename 要保存的文件名(不含擴展名)
 * @return mixed 下載成功返回一個描述圖片信息的數組,下載失敗則返回false
 */
static public function downloadImage($url, $filepath, $filename) {
  //服務器返回的頭信息
  $responseHeaders = array();
  //原始圖片名
  $originalfilename = '';
  //圖片的后綴名
  $ext = '';
  $ch = curl_init($url);
  //設置curl_exec返回的值包含Http頭
  curl_setopt($ch, CURLOPT_HEADER, 1);
  //設置curl_exec返回的值包含Http內容
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  //設置抓取跳轉(http 301,302)后的頁面
  curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
  //設置最多的HTTP重定向的數量
  curl_setopt($ch, CURLOPT_MAXREDIRS, 3);
 
  //服務器返回的數據(包括http頭信息和內容)
  $html = curl_exec($ch);
  //獲取此次抓取的相關信息
  $httpinfo = curl_getinfo($ch);
  curl_close($ch);
  if ($html !== false) {
    //分離response的header和body,由于服務器可能使用了302跳轉,所以此處需要將字符串分離為 2+跳轉次數 個子串
    $httpArr = explode("\r\n\r\n", $html, 2 + $httpinfo['redirect_count']);
    //倒數第二段是服務器最后一次response的http頭
    $header = $httpArr[count($httpArr) - 2];
    //倒數第一段是服務器最后一次response的內容
    $body = $httpArr[count($httpArr) - 1];
    $header.="\r\n";
 
    //獲取最后一次response的header信息
    preg_match_all('/([a-z0-9-_]+):\s*([^\r\n]+)\r\n/i', $header, $matches);
    if (!empty($matches) && count($matches) == 3 && !empty($matches[1]) && !empty($matches[1])) {
      for ($i = 0; $i < count($matches[1]); $i++) {
        if (array_key_exists($i, $matches[2])) {
          $responseHeaders[$matches[1][$i]] = $matches[2][$i];
        }
      }
    }
    //獲取圖片后綴名
    if (0 < preg_match('{(?:[^\/\\\\]+)\.(jpg|jpeg|gif|png|bmp)$}i', $url, $matches)) {
      $originalfilename = $matches[0];
      $ext = $matches[1];
    } else {
      if (array_key_exists('Content-Type', $responseHeaders)) {
        if (0 < preg_match('{image/(\w+)}i', $responseHeaders['Content-Type'], $extmatches)) {
          $ext = $extmatches[1];
        }
      }
    }
    //保存文件
    if (!empty($ext)) {
      //如果目錄不存在,則先要創建目錄
      if(!is_dir($filepath)){
        mkdir($filepath, 0777, true);
      }
         
      $filepath .= '/'.$filename.".$ext";
      $local_file = fopen($filepath, 'w');
      if (false !== $local_file) {
        if (false !== fwrite($local_file, $body)) {
          fclose($local_file);
          $sizeinfo = getimagesize($filepath);
          return array('filepath' => realpath($filepath), 'width' => $sizeinfo[0], 'height' => $sizeinfo[1], 'orginalfilename' => $originalfilename, 'filename' => pathinfo($filepath, PATHINFO_BASENAME));
        }
      }
    }
  }
  return false;
}
本文最后更新于 2022-12-27 20:07,某些文章具有時效性,若有錯誤或已失效,請在網站留言或聯系站長:17tui@17tui.com
·END·
站長網微信號:w17tui,關注站長、創業、關注互聯網人 - 互聯網創業者營銷服務中心

免責聲明:本站部分文章和圖片均來自用戶投稿和網絡收集,旨在傳播知識,文章和圖片版權歸原作者及原出處所有,僅供學習與參考,請勿用于商業用途,如果損害了您的權利,請聯系我們及時修正或刪除。謝謝!

17站長網微信二維碼

始終以前瞻性的眼光聚焦站長、創業、互聯網等領域,為您提供最新最全的互聯網資訊,幫助站長轉型升級,為互聯網創業者提供更加優質的創業信息和品牌營銷服務,與站長一起進步!讓互聯網創業者不再孤獨!

掃一掃,關注站長網微信

大家都在看

    熱門排行

      最近更新

        返回頂部
        主站蜘蛛池模板: 国产 日韩 欧美 高清 亚洲 | 中国女人内谢69XXXXXA片 | 俄罗斯bbbb | 少妇精品无码一区二区三区 | 人妖xxhdxx | 美国色吧影院 | 久久www99re在线播放 | 国产成人女人视频在线观看 | 午夜福利合集1000在线 | 3acg同人漫画禁图h | 男人J桶女人P视频无遮挡网站 | 国产精品亚洲专区在线播放 | 99re久久精品在线播放 | 色小姐电影qvod播放 | 亚洲午夜精品久久久久久抢 | 国产成人高清视频 | 青青久久网 | 亚洲精品久久久WWW游戏好玩 | 十八禁啪啦啪漫画 | 国内精品免费久久影院 | 旧里番YY6080在线播放 | 免费看的一级毛片 | 欧美国产日韩久久久 | 国产99精品视频 | www.伊人 | 成人在线视频免费看 | 亚欧乱亚欧乱色视频 | 亚洲精品网址 | 回复术士人生重启在线观看 | 成人免费毛片观看 | 曰产无码久久久久久精品 | 亚洲精品国产拍在线观看 | 少爷被多个暗卫肉高h | 69成人免费视频 | 国产精品永久免费视频 | 被六个男人躁到一夜同性 | 好满射太多了装不下了视频 | www.青青草 | 亚洲国产精麻豆 | 熟女强奷系列中文字幕 | 免费99精品国产自在现线 |