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

17站長網

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

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

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

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

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

掃一掃,關注站長網微信

大家都在看

    熱門排行

      最近更新

        返回頂部
        主站蜘蛛池模板: 久99久热只有精品国产99 | 免费又爽又黄禁片观看1000 | 污网址免费 | 亚洲欧美日韩另类精品一区二区三区 | 成人午夜视频在线播放 | 男女晚上爱爱的视频在线观看 | 手机看片日韩高清国产欧美 | 亚洲 欧美 日韩 综合 | 国产高清视频一区二区 | 高清性色生活片免费视频软件 | 久久机热综合久久国产 | 美女久久久久久久久久久 | 国产精品无卡无在线播放 | 亚洲欧美另类自拍第一页 | 久久东京伊人一本到鬼色 | 99久久婷婷国产综合精品hsex | 国产不卡的一区二区三区四区 | 91极品视频在线观看 | 欧美 日产 国产精品 | 国产资源网站 | 国产精品一卡二卡三卡 | 久久9966精品国产免费 | 一级黄色淫片 | 国产在线视频不卡 | 日韩一级视频免费观看 | 亚洲xx站| 国产成 人 综合 亚洲网 | 亚洲第一伊人 | 91福利一区二区 | 1024cao社区榴地址一地址二 | 黄色片免费看视频 | 国产大尺度吃奶无遮无挡 | 114级毛片免费观看 123456成年免费视频 | 久久有这有精品在线观看 | 亚洲国产图片 | 国产毛片网站 | 亚洲加勒比久久88色综合一区 | 777国产精品永久免费观看 | 成人免费看黄网址 | 手机在线日韩高清理论片 | 欧美一区二区三 |