精品免费在线观看-精品欧美-精品欧美成人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站長網微信二維碼

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

掃一掃,關注站長網微信

大家都在看

    熱門排行

      最近更新

        返回頂部
        主站蜘蛛池模板: 91精品全国免费观看老司机 | 国产高清精品在线 | 亚洲qingse中文字幕久久 | 国产jav| 色综合久久夜色精品国产 | 金发美女与黑人巨大交 | 日本国产在线视频 | 中文字幕电影在线观看 | 久久国产精品岛国搬运工 | 久久精品一区二区三区不卡牛牛 | 国产大片好看免费播放 | 二区三区不卡不卡视频 | 黄色影片免费观看 | 国产99在线播放 | 国产精品久久99 | 亚洲高清一区二区三区 | 98精品全国免费观看视频 | 黄 色 成 年人在线 黄 色 成 年人网站 | 久热香蕉在线爽青青 | 女性潮高免费高清视频 | 亚洲一区二区三区高清 | 呦系列视频一区二区三区 | 手机在线观看亚洲国产精品 | 久久91精品国产91久久 | 亚洲成年人网 | 欧美xxxx新一区二区三区 | 99riav国产精品 | 九九在线免费观看视频 | 一级亚洲 | 美女被免费网站91 | 欧美日韩一区二区三区视视频 | 毛片一级黄色 | 欧美超级碰碰 | 欧美毛片在线观看 | 欧美日韩亚洲国产一区二区三区 | 番茄视频二三区 | 黄色大片在线播放 | 麻豆91精品91久久久 | www.91视频.com | 91精品国产高清91久久久久久 | 国产成人福利在线 |