php实现远程文件下载代码

 更新时间:2016年11月25日 17:34  点击:2213
这里为各位提供一款远程文件下载代码,我们可以把远程的文件用php下载到本地指定的目录,希望文章对你有帮助。
 代码如下 复制代码

class download
{
    var $url;//远程文件地址

    var $file_name = "hdwiki.zip";//下载来的文件名称

    var $save_path = "./www.111cn.net";//下载到本地的文件路径

    var $localfile;//下载到本地文件的路径和名称

    var $warning;//警告信息

    var $redown=0;//是否重新下载


    /*初始化*/
    function seturl($url)
    {
         if(!empty($url))$this->url = $url;
    }

    function setfilename($file_name)
    {
     if(!empty($file_name))$this->file_name = $file_name;
    }

    function setsavepath($save_path)
    {
     if(!empty($save_path))$this->save_path = $save_path;
    }

    function setredown($redown)
    {
     if(!empty($redown))$this->redown = $redown;
    }

    function download($url, $redown = 0, $save_path = 0, $file_name = 0)
    {
        $this->seturl($url);
        $this->setfilename($file_name);
        $this->setsavepath($save_path);
        $this->setredown($redown);
        if(!file_exists($this->save_path))
        {
            $dir = explode("/",$this->save_path);
            foreach($dir as $p)
            mkdir($p);
        }
   }
  
    /* 检查url合法性函数 */
    function checkurl(){
        return preg_match("/^(http|ftp)(://)([a-za-z0-9-_]+[./]+[w-_/]+.*)+$/i", $this->url);
    }

    //下载文件到本地

    function downloadfile()
    {
        //检测变量

        $this->localfile = $this->save_path."/".$this->file_name;
         if($this->url == "" || $this->localfile == ""){
                 $this->warning = "error: 变量设置错误.";
             return $this->warning;
        }

        if (!$this->checkurl()){
            $this->warning = "error: url ". $this->url ." 不合法.";
               return $this->warning;
            }

        if (file_exists($this->localfile)){
            if($this->redown)
            {
                unlink($this->localfile);
            }
            else
            {
                $this->warning = "warning: 升级文件 ". $this->localfile ." 已经存在! <a href='?action=download&redown=1' target='_self'>重新下载</a>";
                return $this->warning;
             //exit("error: 本地文件 ". $this->localfile ." 已经存在,请删除或改名后重新运行本程序.");

            }
        }

        //打开远程文件

        $fp = fopen($this->url, "rb");
        if (!$fp){
            $this->warning = "error: 打开远程文件 ". $this->url ." 失败.";
             return $this->warning;
        }

     //打开本地文件

     $sp = fopen($this->localfile, "wb");
     if (!$sp){
         $this->warning = "error: 打开本地文件 ". $this->localfile ." 失败.";
         return $this->warning;
     }

     //下载远程文件

     //echo "正在下载远程文件,请等待";

     while (!feof($fp)){
     $tmpfile .= fread($fp, 1024);
     //echo strlen($tmpfile);

     }
       //保存文件到本地

       fwrite($sp, $tmpfile);
     fclose($fp);
     fclose($sp);
    
     if($this->redown)
             $this->warning = "success: 重新下载文件 ". $this->file_name ." 成功";
     else
             $this->warning = "success: 下载文件 ". $this->file_name ." 成功";
             
     return $this->warning;
    }
}

本款手机号码归属地查询代码是一款php开源手机归属查询系统,本系统不依靠mysql之类的大型数据库,而是依靠文本,因为,一般一个手机号码,在查询系统中起决定作用的就是前7位
 代码如下 复制代码

if( $_post )
{
 $phone=(isset($_post["phone"]))?$_post["phone"]:die ("请返回");
echo "你查询的:$phone,资料:".getphone($phone);


function getphone($phone){
 $dbpath="datas/";
 $len=strlen($phone);
 if ( $len !=11 ){
 return "手机号码只支持11位";
 }
 $par="[0-9]";
 for ($i=0;$i<$len;$i++){
  if(!ereg($par,substr($phone,$i,1) ) ){
  return "手机号码只能为数字";
  }
 }
 $sunum=scandir($dbpath); //得到支持的手机号码前缀
  array_splice($sunum,0,1); //把当前目录取消
  array_splice($sunum,0,1); //把上一级目录去掉
 $sub=substr($phone,0,3); //取得该号码的前三位
 if (in_array($sub,$sunum) ){
   $num=substr($phone,3,4);
  $search=file($dbpath.$sub);
  $result=str_replace($num."=","",$search[$num]); //处理数据
  return (strlen($result)>1)?$result:"0";

 }else{
 return "暂不支持$sub";
 
 }

}
}
?>

 代码如下 复制代码

<html>
 <head>
  <meta http-equiv="content-type" content="text/html; charset=utf-8" />
    <title>手机号码归属地查询</title>
 </head>
<body>
 <form action="search.php" method="post">
 <p>请输入手机号码:<input type="text" name="phone"></p>
 <p><input type="submit" value="查询"></p></p>
 </form>
</body>
</html>

这是一款php的系统参数探测,他可以检测到FreeBSD cpu,内存,更新时间,运行时间等。

//取得参数值 FreeBSD

function get_key($keyName)
    {
        return do_command('sysctl', "-n $keyName");
    }
    

// 确定执行文件位置 FreeBSD

    function find_command($commandName)
    {
        $path = array('/bin', '/sbin', '/usr/bin', '/usr/sbin', '/usr/local/bin', '/usr/local/sbin');
        foreach($path as $p)
        {
            if (@is_executable("$p/$commandName")) return "$p/$commandName";
        }
        return false;
    }
 
 function sys_freebsd()
    {
        //CPU
        if (false === ($res['cpu']['num'] = get_key("hw.ncpu"))) return false;
        $res['cpu']['detail'] = get_key("hw.model");
        
        //LOAD AVG
        if (false === ($res['loadAvg'] = get_key("vm.loadavg"))) return false;
        $res['loadAvg'] = str_replace("{", "", $res['loadAvg']);
        $res['loadAvg'] = str_replace("}", "", $res['loadAvg']);
        
        //UPTIME
        if (false === ($buf = get_key("kern.boottime"))) return false;
        $buf = explode(' ', $buf);
        $sys_ticks = time() - intval($buf[3]);
        $min = $sys_ticks / 60;
        $hours = $min / 60;
        $days = floor($hours / 24);
        $hours = floor($hours - ($days * 24));
        $min = floor($min - ($days * 60 * 24) - ($hours * 60));
        if ($days !== 0) $res['uptime'] = $days."天";
        if ($hours !== 0) $res['uptime'] .= $hours."小时";
        $res['uptime'] .= $min."分钟";
        
        //MEMORY
        if (false === ($buf = get_key("hw.physmem"))) return false;
        $res['memTotal'] = round($buf/1024/1024, 2);
        $buf = explode(" ", do_command("vmstat", ""));
        $buf = explode(" ", trim($buf[2]));
        
        $res['memFree'] = round($buf[5]/1024, 2);
        $res['memUsed'] = ($res['memTotal']-$res['memFree']);
        $res['memPercent'] = (floatval($res['memTotal'])!=0)?round($res['memUsed']/$res['memTotal']*100,2):0;
          
        $buf = explode(" ", do_command("swapinfo", "-k"));
        $buf = $buf[1];
        preg_match_all("/([0-9]+)s+([0-9]+)s+([0-9]+)/", $buf, $bufArr);
        $res['swapTotal'] = round($bufArr[1][0]/1024, 2);
        $res['swapUsed'] = round($bufArr[2][0]/1024, 2);
        $res['swapFree'] = round($bufArr[3][0]/1024, 2);
        $res['swapPercent'] = (floatval($res['swapTotal'])!=0)?round($res['swapUsed']/$res['swapTotal']*100,2):0;
        
        return $res;
    }
 //针探使用方法
 
 sys_freebsd();

  if($_POST[submit]){

   checkusername($_POST[username]);

    if($_SESSION["code"]==$_POST[code])

      {

    $username= str_replace(" ","",$_POST[username]);
    $password=md5($_POST[password].ALL_PS);
    $sql="INSERT INTO `member`.`user_list` (`uid`, `m_id`, `username`, `password`) VALUES (NULL, '$_POST[select]', '$username','$password' )";
    mysql教程_query($sql);
    echo "注册成功";
     }

    else
     {
      echo "验证码错误"."<br>";
      session_destroy();
     }
 }


   function checkusername($username)
          {
           $sql2 = "select uid from user_list where username='".mysql_escape_string($username)."'";
            $result = mysql_query($sql2) or die ('ERROR: '.mysql_error());
            if(mysql_num_rows($result)>0)
                {
                echo "该用户名已经存在,请更换!";

                exit();
                 }
            else{
                 echo "<script> location.href='reg.php'</script>";
                 }


           }


?>
<LINK href="common.css教程" type=text/css rel=stylesheet>

  <form action="" method="post">

  用户名:<input type="text" name="username" style="height:23px" /><br>
  密 码:<input type="password" name="password"  style="height:23px" /><br>
  职  位:

  <select name="select" size="1" style="height:23px" / >
    <option value="1">1</option>
    <option value="2">2</option>

  </select>
  <br/>

 


  验证码:<input type="code" name="code" size="10" style="height:23px" />
  <img src="imgcode.php">
  <br><br>
  <input type="submit" name="submit" value="注册"/>
  </form>

function listDirFiles()
{
 // 设置目录
 $dirs = './';

 // 申明文件夹数组与文件数组
 $aFolders = array() ;
 $aFiles  = array() ;

 $ocfolder = opendir( $dirs ) ;//则该函数返回一个目录流,否则返回 false 以及一个 error。可以通过在函数名前加上 "@" 来隐藏 error 的输出。用法opendir(path,context)


 while ( $sFile = readdir( $ocfolder ) ) // readdir() 函数返回由 opendir() 打开的目录句柄中的条目 语法:readdir(dir_stream)
 {
  if ( $sFile != '.' && $sFile != '..' )
  {
   if ( is_dir( $dirs . $sFile ) ) // 判断是否为目录,是返回ture否就返回false;
    $aFolders[] = 'dirs:' . $sFile . '<br />' ;
   else
   {
    $fsize = @filesize( $dirs . $sFile ) ; //filesize() 函数返回指定文件的大小。 语法:filesize(filename)


    if ( !$fsize ) {
     $fsize = 0 ;
    }
    if ( $fsize > 0 )
    {
     $fsize = round( $fsize / 1024 ) ;//round() 函数对浮点数进行四舍五入。 round(x,prec)
     if ( $fsize < 1 ) $fsize = 1 ;
    }

    $aFiles[] = '文件名:' .$sFile . '文件大小=' . $fsize . 'KB<br />' ;
   }
  }
 }


 // 对目录进行自然排序
 
 natcasesort( $aFolders ) ;//对数组自然排序 natcasesort(array)

 foreach ( $aFolders as $sFolder )
 {
  echo $sFolder ;
 }

 // 对文件进行自然排序
 natcasesort( $aFiles ) ; // 自然1-9,a-z排序natcasesort(array);
 foreach ( $aFiles as $sFiles )
 {
  echo $sFiles ;
 }


}

/*
调用方法当前有目录
dirs:1
dirs:www.111cn.net
文件名:1.php
文件名:2.php
*/

listDirFiles();

/*
输出结果为
dirs:1
dirs:www.111cn.net
文件名:1.php文件大小=1KB
文件名:2.php文件大小=2KB

用到函数解析
opendir
则该函数返回一个目录流,否则返回 false 以及一个 error。可以通过在函数名前加上 "@" 来隐藏 error 的输出。用法opendir(path,context)
is_dir
判断是否为目录,是返回ture否就返回false;
readdir
readdir() 函数返回由 opendir() 打开的目录句柄中的条目 语法:readdir(dir_stream)
filesize()
 函数返回指定文件的大小。 语法:filesize(filename)
natcasesort(array)
natcasesort() 函数实现了“自然排序”,即数字从 1 到 9 的排序方法,字母从 a 到 z 的排序方法,短者优先,该函数不区分大小写。数组的索引与单元值保持关联

[!--infotagslink--]

相关文章

  • php读取zip文件(删除文件,提取文件,增加文件)实例

    下面小编来给大家演示几个php操作zip文件的实例,我们可以读取zip包中指定文件与删除zip包中指定文件,下面来给大这介绍一下。 从zip压缩文件中提取文件 代...2016-11-25
  • Jupyter Notebook读取csv文件出现的问题及解决

    这篇文章主要介绍了JupyterNotebook读取csv文件出现的问题及解决,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教...2023-01-06
  • Photoshop打开PSD文件空白怎么解决

    有时我们接受或下载到的PSD文件打开是空白的,那么我们要如何来解决这个 问题了,下面一聚教程小伙伴就为各位介绍Photoshop打开PSD文件空白解决办法。 1、如我们打开...2016-09-14
  • 解决python 使用openpyxl读写大文件的坑

    这篇文章主要介绍了解决python 使用openpyxl读写大文件的坑,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-03-13
  • C#实现HTTP下载文件的方法

    这篇文章主要介绍了C#实现HTTP下载文件的方法,包括了HTTP通信的创建、本地文件的写入等,非常具有实用价值,需要的朋友可以参考下...2020-06-25
  • SpringBoot实现excel文件生成和下载

    这篇文章主要为大家详细介绍了SpringBoot实现excel文件生成和下载,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2021-02-09
  • C#操作本地文件及保存文件到数据库的基本方法总结

    C#使用System.IO中的文件操作方法在Windows系统中处理本地文件相当顺手,这里我们还总结了在Oracle中保存文件的方法,嗯,接下来就来看看整理的C#操作本地文件及保存文件到数据库的基本方法总结...2020-06-25
  • php无刷新利用iframe实现页面无刷新上传文件(1/2)

    利用form表单的target属性和iframe 一、上传文件的一个php教程方法。 该方法接受一个$file参数,该参数为从客户端获取的$_files变量,返回重新命名后的文件名,如果上传失...2016-11-25
  • php批量替换内容或指定目录下所有文件内容

    要替换字符串中的内容我们只要利用php相关函数,如strstr,str_replace,正则表达式了,那么我们要替换目录所有文件的内容就需要先遍历目录再打开文件再利用上面讲的函数替...2016-11-25
  • PHP文件上传一些小收获

    又码了一个周末的代码,这次在做一些关于文件上传的东西。(PHP UPLOAD)小有收获项目是一个BT种子列表,用户有权限上传自己的种子,然后配合BT TRACK服务器把种子的信息写出来...2016-11-25
  • AI源文件转photoshop图像变模糊问题解决教程

    今天小编在这里就来给photoshop的这一款软件的使用者们来说下AI源文件转photoshop图像变模糊问题的解决教程,各位想知道具体解决方法的使用者们,那么下面就快来跟着小编...2016-09-14
  • C++万能库头文件在vs中的安装步骤(图文)

    这篇文章主要介绍了C++万能库头文件在vs中的安装步骤(图文),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-02-23
  • Zend studio文件注释模板设置方法

    步骤:Window -> PHP -> Editor -> Templates,这里可以设置(增、删、改、导入等)管理你的模板。新建文件注释、函数注释、代码块等模板的实例新建模板,分别输入Name、Description、Patterna)文件注释Name: 3cfileDescriptio...2013-10-04
  • php文件上传你必须知道的几点

    本篇文章主要说明的是与php文件上传的相关配置的知识点。PHP文件上传功能配置主要涉及php.ini配置文件中的upload_tmp_dir、upload_max_filesize、post_max_size等选项,下面一一说明。打开php.ini配置文件找到File Upl...2015-10-21
  • ant design中upload组件上传大文件,显示进度条进度的实例

    这篇文章主要介绍了ant design中upload组件上传大文件,显示进度条进度的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-10-29
  • C#使用StreamWriter写入文件的方法

    这篇文章主要介绍了C#使用StreamWriter写入文件的方法,涉及C#中StreamWriter类操作文件的相关技巧,需要的朋友可以参考下...2020-06-25
  • php实现文件下载实例分享

    举一个案例:复制代码 代码如下:<?phpclass Downfile { function downserver($file_name){$file_path = "./img/".$file_name;//转码,文件名转为gb2312解决中文乱码$file_name = iconv("utf-8","gb2312",$file_name...2014-06-07
  • C#路径,文件,目录及IO常见操作汇总

    这篇文章主要介绍了C#路径,文件,目录及IO常见操作,较为详细的分析并汇总了C#关于路径,文件,目录及IO常见操作,具有一定参考借鉴价值,需要的朋友可以参考下...2020-06-25
  • 查找php配置文件php.ini所在路径的二种方法

    通常php.ini的位置在:复制代码 代码如下:/etc目录下或/usr/local/lib目录下。如果你还是找不到php.ini或者找到了php.ini修改后不生效(其实是没找对),请使用如下办法:1.新建php文件,写入如下代码复制代码 代码如下:<?phpe...2014-05-31
  • PHP判断上传文件类型的解决办法

    分享给大家php判断上传文件类型的方法,大家一起学习学习。/** * 读取文件前几个字节 判断文件类型 * @return String */ function checkTitle($filename){ $file=fopen($filename, "rb"); $bin=fread($file, 2); /...2015-10-21