精品免费在线观看-精品欧美-精品欧美成人bd高清在线观看-精品欧美高清不卡在线-精品欧美日韩一区二区

17站長網

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

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

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

/** *下載遠程圖片 *@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站長網微信二維碼

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

掃一掃,關注站長網微信

大家都在看

    熱門排行

      最近更新

        返回頂部
        主站蜘蛛池模板: 国产巨乳在线 | 久草手机视频在线观看 | 在线看免费观看韩国特黄一级 | 国产婷婷一区二区在线观看 | 精品国产调教最大网站女王 | 一级影院| 国产91av视频在线观看 | 中文字幕在线高清 | 5月婷婷6月丁香 | 青草在线观看 | 色啊色 | 在线观看自拍视频 | 黄色的视频免费看 | 一级a性色生活片毛片 | 久草免费网站 | 色综合图区 | 亚洲欧美日韩综合在线一区二区三区 | 黄色一级视频播放 | 国产精品麻豆高清在线观看 | 黄色免费网站在线观看 | 朴妮唛1一30集福利在线播放 | 伊人情涩网 | 中国国产成人精品久久 | 日韩h片在线观看 | 92精品国产自产在线观看48页 | 免费国产成人高清视频网站 | 尤物精品视频在线观看 | 久草小区二区三区四区网页 | 日本久久久久久久中文字幕 | 国产男女乱淫真视频全程播放 | 国产不卡在线 | 国产精品成人免费视频 | 3344成年站福利在线视频免费 | 国产成人啪午夜精品网站 | 亚洲黄色在线视频 | 国产精品夜色视频一级区 | 一男一女的一级毛片 | 色网站网址 | 成人国产精品 | vr成人啪啪影视 | 成人综合影院 |