您的位置 首页 php

PHP类库分享:支持断点续传的下载文件的php类库

PHP类库分享:支持断点续传的下载文件的php类库

各位朋友大家好!

今天给大家带来的是一款支持 断点续传 的下载文件的php类库!

由于源码比较长,需要源码的朋友可以私聊小编哦!

好了 废话不多说上源码!

<?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>rn”;

}

}

/**

* 判别用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.” $httpvrn”);

fputs($this->m_fp,”Host: “.$this->m_host.”rn”);

fputs($this->m_fp,”Accept: */*rn”);

fputs($this->m_fp,”User-Agent: Mozilla/4.0+(compatible;+MSIE+6.0;+Windows+NT+5.2)rn”);

#HTTP1.1协议必须指定文档结束后关闭链接,否则读取文档时无法使用feof判断结束

if ($httpv==”HTTP/1.1″) {

fputs($this->m_fp,”Connection: Closernrn”);

} else {

fputs($this->m_fp,”rn”);

}

$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);

}

}

文章来源:智云一二三科技

文章标题:PHP类库分享:支持断点续传的下载文件的php类库

文章地址:https://www.zhihuclub.com/79649.shtml

关于作者: 智云科技

热门文章

评论已关闭

29条评论

  1. 7 Beta blockers decrease secretion of insulin, which may mask hypoglycemia in an insulin dependant patient

  2. Owing to the success of tamoxifen in breast cancer patients, its use is currently being extended to include groups of healthy women at risk for the development of breast cancer Blocking these signals may kill cancer cells

  3. However, one third of tamoxifen treated patients will have a disease recurrence within 15 years as they do not respond to initial therapy or acquire drug resistance 1 mg day, Medroxyprogesterone acetate 8 mg day or CB 154 1 mg day

  4. Everything else is the same for legit halodrol packaging, just no ink and pressed typing for exp and lot

  5. have shown that people with an inherited disorder called G6PD deficiency should not be given high doses of vitamin C because it may cause hemolysis

  6. Coronary artery abnormalities in CREST syndrome revealed by cardiovascular magnetic resonance imaging Because of the potential for serious adverse reactions in nursing infants from doxycycline, a decision should be made whether to discontinue nursing or to discontinue the drug, taking into account the importance of the drug to the mother See

  7. azithromycin methylprednisolone obat gusi bengkak Гў When I got to Vancouver, the twins, Hank and Danny Sedin, were both 25 years old

  8. In three single agent adjuvant studies in women, one 10 mg Tamoxifeno Gador tamoxifen citrate tablet was administered two ECOG and NATO or three Toronto times a day for two years 1998 Sep; 18 9 1506 13

  9. BioCoat Invasion chambers were purchased from Thermo Fisher Scientific Waltham, MA, USA 7 between June and August

  10. Windmere Curly Top Hair Dryer Find windmere hair dryer from a vast selection of Hair Dryers REVIEW OF SYSTEMS As per the HPI, otherwise negative

  11. 31, which met the predefined criterion of a 5 improvement in PFS Significant fibrosis was present in the ventral- caudal border of the sciatic nerve where the pudendal nerve would be expected to exit the pelvis

  12. The systemic effects of the Fusarium toxin deoxynivalenol DON and of bacterial lipopolysaccharides LPS were studied in male castrated pigs 40 Loop diuretics also treat hypertension, but not as a 1st line agent

  13. Currently 15W 3D pregnant and all looked good at the last ultrasound Findings for genetically proxied ACE inhibition and colorectal cancer risk were replicated in an independent sample of 1, 571 colorectal cancer cases and 120, 006 controls of European ancestry in the Finngen consortium 1

网站地图