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

17站長網

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

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

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

/** *下載遠程圖片 *@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,某些文章具有時效性,若有錯誤或已失效,請在網站留言或聯系站長:[email protected]
·END·
站長網微信號:w17tui,關注站長、創業、關注互聯網人 - 互聯網創業者營銷服務中心

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

17站長網微信二維碼

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

掃一掃,關注站長網微信

大家都在看

    熱門排行

      最近更新

        返回頂部
        主站蜘蛛池模板: 在线观看网| 国产精品第一区第27页 | 青青操视频在线免费观看 | 性欧美视频在线观看 | 九九久久久久午夜精选 | 伊人久久国产 | 97香蕉超级碰碰碰久久兔费 | 青青热久免费精品视频在线观看 | 香蕉在线观看视频 | 欧美a大片欧美片 | 热久久伊人 | 久久综合中文字幕一区二区三区 | 国产成人精品午夜视频' | 久久精品国产91久久麻豆自制 | 免费看一级欧美激情毛片 | 国产欧美一区二区三区在线看 | 亚洲欧美性视频 | 久9视频这里只有精品8 | 干综合网| 1024在线视频 | 18禁片一级毛片视频播放免费看 | 日本一区精品 | 久久久99精品免费观看 | 国产免费一区不卡在线 | 亚洲国产精品综合久久20 | 亚洲欧洲日产国码在线观看 | 亚洲小视频网站 | 成人满18在线观看网站免费 | 黄色大片视频在线观看 | 欧美综合在线播放 | 亚洲男女免费视频 | 久久久久日韩精品免费观看网 | 免费人成在线视频播放2022 | 日本一级毛片在线看 | 美女批日起爽在线观看 | 国产乱码视频 | 亚洲 激情 | 91插插插插插 | 亚洲国产黄色 | 国产 网红 喷水 播放 | 国产毛片a精品毛 |