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

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

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

服務器之家 - 編程語言 - PHP教程 - php遠程下載類分享

php遠程下載類分享

2021-01-10 16:35旺仔的小饅頭 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
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
<?php
/**
* 下載遠程文件類支持斷點續傳
*/
class HttpDownload {
private $m_url = "";
private $m_urlpath = "";
private $m_scheme = "http";
private $m_host = "";
private $m_port = "80";
private $m_user = "";
private $m_pass = "";
private $m_path = "/";
private $m_query = "";
private $m_fp = "";
private $m_error = "";
private $m_httphead = "" ;
private $m_html = "";
 
/**
* 初始化
*/
public function PrivateInit($url){
$urls = "";
$urls = @parse_url($url);
$this->m_url = $url;
if(is_array($urls)) {
$this->m_host = $urls["host"];
if(!empty($urls["scheme"])) $this->m_scheme = $urls["scheme"];
if(!empty($urls["user"])) $this->m_user = $urls["user"];
if(!empty($urls["pass"])) $this->m_pass = $urls["pass"];
if(!empty($urls["port"])) $this->m_port = $urls["port"];
if(!empty($urls["path"])) $this->m_path = $urls["path"];
$this->m_urlpath = $this->m_path;
if(!empty($urls["query"])) {
$this->m_query = $urls["query"];
$this->m_urlpath .= "?".$this->m_query;
}
}
}
 
/**
* 打開指定網址
*/
function OpenUrl($url) {
#重設各參數
$this->m_url = "";
$this->m_urlpath = "";
$this->m_scheme = "http";
$this->m_host = "";
$this->m_port = "80";
$this->m_user = "";
$this->m_pass = "";
$this->m_path = "/";
$this->m_query = "";
$this->m_error = "";
$this->m_httphead = "" ;
$this->m_html = "";
$this->Close();
#初始化系統
$this->PrivateInit($url);
$this->PrivateStartSession();
}
 
/**
* 獲得某操作錯誤的原因
*/
public function printError() {
echo "錯誤信息:".$this->m_error;
echo "具體返回頭:<br>";
foreach($this->m_httphead as $k=>$v) {
echo "$k => $v <br>\r\n";
}
}
 
/**
* 判別用Get方法發送的頭的應答結果是否正確
*/
public function IsGetOK() {
if( ereg("^2",$this->GetHead("http-state")) ) {
return true;
} else {
$this->m_error .= $this->GetHead("http-state")." - ".$this->GetHead("http-describe")."<br>";
return false;
}
}
 
/**
* 看看返回的網頁是否是text類型
*/
public function IsText() {
if (ereg("^2",$this->GetHead("http-state")) && eregi("^text",$this->GetHead("content-type"))) {
return true;
} else {
$this->m_error .= "內容為非文本類型<br>";
return false;
}
}
/**
* 判斷返回的網頁是否是特定的類型
*/
public function IsContentType($ctype) {
if (ereg("^2",$this->GetHead("http-state")) && $this->GetHead("content-type") == strtolower($ctype)) {
return true;
} else {
$this->m_error .= "類型不對 ".$this->GetHead("content-type")."<br>";
return false;
}
}
 
/**
* 用 HTTP 協議下載文件
*/
public function SaveToBin($savefilename) {
if (!$this->IsGetOK()) return false;
if (@feof($this->m_fp)) {
$this->m_error = "連接已經關閉!";
return false;
}
$fp = fopen($savefilename,"w") or die("寫入文件 $savefilename 失敗!");
while (!feof($this->m_fp)) {
@fwrite($fp,fgets($this->m_fp,256));
}
@fclose($this->m_fp);
return true;
}
 
/**
* 保存網頁內容為 Text 文件
*/
public function SaveToText($savefilename) {
if ($this->IsText()) {
$this->SaveBinFile($savefilename);
} else {
return "";
}
}
 
/**
* 用 HTTP 協議獲得一個網頁的內容
*/
public function GetHtml() {
if (!$this->IsText()) return "";
if ($this->m_html!="") return $this->m_html;
if (!$this->m_fp||@feof($this->m_fp)) return "";
while(!feof($this->m_fp)) {
$this->m_html .= fgets($this->m_fp,256);
}
@fclose($this->m_fp);
return $this->m_html;
}
 
/**
* 開始 HTTP 會話
*/
public function PrivateStartSession() {
if (!$this->PrivateOpenHost()) {
$this->m_error .= "打開遠程主機出錯!";
return false;
}
if ($this->GetHead("http-edition")=="HTTP/1.1") {
$httpv = "HTTP/1.1";
} else {
$httpv = "HTTP/1.0";
}
fputs($this->m_fp,"GET ".$this->m_urlpath." $httpv\r\n");
fputs($this->m_fp,"Host: ".$this->m_host."\r\n");
fputs($this->m_fp,"Accept: */*\r\n");
fputs($this->m_fp,"User-Agent: Mozilla/4.0+(compatible;+MSIE+6.0;+Windows+NT+5.2)\r\n");
#HTTP1.1協議必須指定文檔結束后關閉鏈接,否則讀取文檔時無法使用feof判斷結束
if ($httpv=="HTTP/1.1") {
fputs($this->m_fp,"Connection: Close\r\n\r\n");
} else {
fputs($this->m_fp,"\r\n");
}
$httpstas = fgets($this->m_fp,256);
$httpstas = split(" ",$httpstas);
$this->m_httphead["http-edition"] = trim($httpstas[0]);
$this->m_httphead["http-state"] = trim($httpstas[1]);
$this->m_httphead["http-describe"] = "";
for ($i=2;$i<count($httpstas);$i++) {
$this->m_httphead["http-describe"] .= " ".trim($httpstas[$i]);
}
while (!feof($this->m_fp)) {
$line = str_replace("\"","",trim(fgets($this->m_fp,256)));
if($line == "") break;
if (ereg(":",$line)) {
$lines = split(":",$line);
$this->m_httphead[strtolower(trim($lines[0]))] = trim($lines[1]);
}
}
}
 
/**
* 獲得一個Http頭的值
*/
public function GetHead($headname) {
$headname = strtolower($headname);
if (isset($this->m_httphead[$headname])) {
return $this->m_httphead[$headname];
} else {
return "";
}
}
 
/**
* 打開連接
*/
public function PrivateOpenHost() {
if ($this->m_host=="") return false;
$this->m_fp = @fsockopen($this->m_host, $this->m_port, &$errno, &$errstr,10);
if (!$this->m_fp){
$this->m_error = $errstr;
return false;
} else {
return true;
}
}
 
/**
* 關閉連接
*/
public function Close(){
@fclose($this->m_fp);
}
}
 
#兩種使用方法,分別如下:
 
#打開網頁
$httpdown = new HttpDownload();
$httpdown->OpenUrl("http://www.google.com.hk");
echo $httpdown->GetHtml();
$httpdown->Close();
 
 
#下載文件
$file = new HttpDownload(); # 實例化類
$file->OpenUrl("http://dldir1.qq.com/qqfile/qq/QQ8.2/17724/QQ8.2.exe"); # 遠程文件地址
$file->SaveToBin("qq.exe"); # 保存路徑及文件名
$file->Close(); # 釋放資源

以上就是本文的全部內容,希望對大家的學習有所幫助。

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 公妇仑乱在线观看 | h版欧美大片免费观看 | 亚洲国产欧美在线人成 | 二次元美女互摸隐私互扒 | 免费高清视频日本 | 女人特黄大aaaaaa大片 | 99re热这里只有精品 | 国产suv精品 | 亚洲成色WWW久久网站夜月 | 2022色婷婷综合久久久 | 视频免费观看在线播放高清 | 无码爽死成人777在线观看网站 | 国产草逼视频 | sxx免费看观看美女 sss亚洲国产欧美一区二区 | 九九精品国产亚洲A片无码 九九99热久久999精品 | 精品小视频在线 | 爱豆传媒最新视频国产 | 国产成人啪精品午夜在线播放 | 色多多视频网站 | 亚洲 欧美 国产 日韩 字幕 | 久久强奷乱码老熟女 | 亚洲天堂网在线观看视频 | 精品视频一区二区三区 | 国产精品免费综合一区视频 | 91欧洲在线视精品在亚洲 | 羞羞答答免费人成黄页在线观看国产 | 亚洲第一区在线观看 | 国产精品免费观在线 | 成人做视频免费 | 日韩精品特黄毛片免费看 | 欧美黑人成人免费全部 | ass日本乱妇ass | oneday高清在线观看 | 99ri国产在线 | 国产成人毛片 | 欧美又黄又激烈真实床戏 | 天堂俺去俺来也www久久婷婷 | 色综合久久综合网欧美综合网 | 闺蜜的样子小说安沁在线阅读 | 四虎最新永久免费网址 | 天天干天天色综合网 |