一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - PHP教程 - php將遠程圖片保存到本地服務器的實現代碼

php將遠程圖片保存到本地服務器的實現代碼

2020-11-13 13:26PHP教程網 PHP教程

有些時候我們想保存一些漂亮圖片,但又不想手動去保存下來,尤其是大批量的存儲,這個時候我們需要寫一段程序來幫助我們完成這個工作,本文介紹了php如何將遠程圖片本地化,需要的朋友可以參考下

php如何將遠程圖片本地化,本文分享了實現代碼

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
<?php
//站點根目錄
$cfg_basedir = dirname(__FILE__);
//停建目錄屬性
$cfg_dir_purview ='0755';
 /*Get請求遠程內容函數*/
 $cookie_file = dirname(__FILE__).'/cookie.txt'; //COOKIE存放地址
  function pget($url,$ref=false,$head=false){
  $curl = curl_init(); // 啟動一個CURL會話
  curl_setopt($curl, CURLOPT_URL, $url); // 要訪問的地址      
  curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0); // 對認證證書來源的檢查
  curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 1); // 從證書中檢查SSL加密算法是否存在
  curl_setopt($curl, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']); // 模擬用戶使用的瀏覽器
  curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1); // 使用自動跳轉
  if($ref){ curl_setopt($curl, CURLOPT_REFERER, $ref);//帶來的Referer
  }else{
  curl_setopt($curl, CURLOPT_AUTOREFERER, 1); // 自動設置Referer
  }
  curl_setopt($curl, CURLOPT_HTTPGET, 1); // 發送一個常規的Post請求
  curl_setopt($curl, CURLOPT_COOKIEJAR, $GLOBALS['cookie_file']); // 存放Cookie信息的文件名稱
  curl_setopt($curl, CURLOPT_COOKIEFILE,$GLOBALS ['cookie_file']); // 讀取上面所儲存的Cookie信息
  curl_setopt($curl, CURLOPT_TIMEOUT, 30); // 設置超時限制防止死循環
  curl_setopt($curl, CURLOPT_HEADER, 0); // 顯示返回的Header區域內容
  curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); // 獲取的信息以文件流的形式返回
  $tmpInfo = curl_exec($curl); // 執行操作
  if (curl_errno($curl)) {
 echo 'Errno'.curl_error($curl);
  }
   if($head){ $data['head']=curl_getinfo($curl);}
  curl_close($curl); // 關鍵CURL會話
  $data['data']=$tmpInfo;
  return $data; // 返回數據
}
 
 
/**
 * 創建所有目錄
 *
 * @param   string $truepath 真實地址
 * @param   string $mmode  模式
 * @return  bool
 */
if ( ! function_exists('MkdirAll'))
{
  function MkdirAll($truepath)
  { global $cfg_dir_purview;
      if(!file_exists($truepath))
      {
        mkdir($truepath, $cfg_dir_purview);
        chmod($truepath, $cfg_dir_purview);
        return true;
      }
      else
      {
        return true;
      }
  }
}
  /**
 * 獲得文章body里的外部資源
 *
 * @access  public
 * @param   string $body 文檔內容
 * @return  string
 */
function GetCurContent($body)
{
  global $cfg_multi_site,$cfg_basehost,$cfg_basedir,$cfg_image_dir,$arcID,$cuserLogin,$dsql;
  $cfg_uploaddir = '/c';
  $basehost = "http://".$_SERVER["HTTP_HOST"];
     
  $img_array = array();
  preg_match_all("/src=[\"|'|\s]{0,}(http:\/\/([^>]*)\.(gif|jpg|png))/isU",$body,$img_array);
   
  $img_array = array_unique($img_array[1]);
  $imgUrl = $cfg_uploaddir.'/'.date("ymd", time());
  $imgPath = $cfg_basedir.$imgUrl;
  if(!is_dir($imgPath.'/'))
  {
    MkdirAll($imgPath, $GLOBALS['cfg_dir_purview']);
    CloseFtp();
  }
  $milliSecond = date('His',time());
  foreach($img_array as $key=>$value)
  
    if(preg_match("#".$basehost."#i", $value))
    {
      continue;
    }
    if(preg_match("#".$basehost."#i", $value))
    {
      continue;
    }
    if(!preg_match("#^http:\/\/#i", $value))
    {
      continue;
    }
    
    $http=pget($value,'$value',true);
    $itype=($http['head']['content_type']);
    if(!preg_match("#\.(jpg|gif|png)#i", $itype))
    {
      if($itype=='image/gif')
      {
        $itype = ".gif";
      }
      else if($itype=='image/png')
      {
        $itype = ".png";
      }
      else
      {
        $itype = '.jpg';
      }
    }
    $milliSecondN = rand(1000,9999).rand(1000,9999);
    $value = trim($value);
    $rndFileName = $imgPath.'/'.$milliSecondN.'-'.$key.$itype;
    $fileurl = $imgUrl.'/'.$milliSecondN.'-'.$key.$itype;
 
    $tp = fopen($rndFileName, 'wb');
    fwrite($tp, $http['data']);
    fclose($tp);
     
    if(file_exists($cfg_basedir.$fileurl))
    {
      $info = '';
      $imginfos = GetImageSize($rndFileName, $info);
      $fsize = filesize($rndFileName);
      $body = str_replace($value, $fileurl, $body);
  
    }
  }
  return $body;
}
 
//調用方式
echo GetCurContent($body);

以上就是實現遠程圖片本地化的全部代碼,希望對大家的學習有所幫助。

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 古装一级无遮挡毛片免费观看 | 调教女帝 | 久久精品麻豆国产天美传媒果冻 | 亚洲麻豆精品果冻传媒 | 8x在线永久成人影院 | 182免费在线观看 | 亚洲国产精品无圣光一区二区 | www.99热.com| 美国雪白人妖sarina | 911精品国产亚洲日本美国韩国 | 99re这里只有精品视频在线观看 | 被老头操 | 天堂精品高清1区2区3区 | 久久精品热在线观看85 | 亚洲高清免费在线观看 | 日本欧美大码a在线视频播放 | 四虎私人影院 | 欧美ay | 免费成年网站 | 97色轮| 免费港剧在线观看港剧 | 奇米网7777 | 草莓视频在线观看免费 | 美女扒开腿让男生桶爽漫画 | 国内在线观看 | 久久综合色超碰人人 | 久久精品黄AA片一区二区三区 | 亚洲国产网址 | 亚洲欧美久久婷婷爱综合一区天堂 | 粉嫩国产14xxxxx0000 | 日韩视频免费看 | 精品一区二区视频 | 性xxxx中国| 好男人资源在线观看免费的 | chanelpreston欧美网站 | 校园刺激全黄H全肉细节文 校草让我脱了内裤给全班看 | 扒开胸流出吃奶 | 国产精品免费小视频 | 亚洲第一免费播放区 | zol中关村在线官网 yy6080欧美三级理论 | 国产高清在线播放免费观看 |