Rumah  >  Artikel  >  pembangunan bahagian belakang  >  php实现文件上传及下载附带显示文件及目录功能

php实现文件上传及下载附带显示文件及目录功能

墨辰丷
墨辰丷asal
2018-05-23 14:23:143086semak imbas

这篇文章主要介绍了php文件上传及下载附带显示文件及目录功能,需要的朋友可以参考下

主页面wenjianceshi.php

<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>文件</title>
<link href="../FENGZHUANG/bootstrap/css/bootstrap.min.css" rel="external nofollow" rel="stylesheet" type="text/css" />
<script src="../FENGZHUANG/jquery-3.1.1.min.js"></script>
<script src="../FENGZHUANG/bootstrap/js/bootstrap.min.js"></script>
<style type="text/css">
  *{
    font-family:"微软雅黑";}
  #wai{width:400px;
    margin:0 auto;
    padding:0px;}
  #chuanshu{
    width:400px;
    margin:0 auto;
    padding:0px;}
  .waibtn{
    width:100%;;
    height:30px;}
  .wjm,.wjbtn{
    width:50%;
    height:100%;
    float:left;
    }
</style>
</head>
<body>
<p id="chuanshu">
  <form role="form" action="upload.php" method="post" enctype="multipart/form-data">
   <p class="form-group">
    <label for="inputfile">文件输入</label>
    <input type="file" name="file" id="inputfile">
   </p>
   <button type="submit" class="btn btn-default">上传</button>
  </form>
</p>
<br /><br /><br />
<p id="wai">
<?php
session_start();
//定义目录
$fname = "./a";//需要显示的目录
if(!empty($_SESSION["fname"]))
{
  $fname = $_SESSION["fname"];
}
$pname = dirname($fname); //取上级目录
if(realpath($fname)=="D:\\wamp\\www\\lt\\a")//注意路径的匹配
{
}//到达了需要显示的最上层目录就不显示上一层标签了
else
{
  echo "<button type=&#39;button&#39; id=&#39;prev&#39; class=&#39;btn waibtn btn-success&#39; url=&#39;{$pname}&#39;>返回上一层</button>";
}
//遍历目录下的所有文件显示
$arr = glob($fname."/*");
foreach($arr as $v)
{
  $name = basename($v); //从完整路径中取文件名
  $name = iconv("gbk","utf-8",$name);
  if(is_dir($v))
  {
    echo "<button type=&#39;button&#39; class=&#39;btn dir waibtn btn-primary&#39; url=&#39;{$v}&#39;>{$name}</button>";
  }
  else
  {
    echo "<button type=&#39;button&#39; class=&#39;btn waibtn item btn-default&#39; url=&#39;{$v}&#39;><p class=&#39;wjm&#39;>{$name}</p><p class=&#39;wjbtn&#39;><a href=&#39;download.php? url={$v}&#39;><input type=&#39;button&#39; value=&#39;下载&#39; url=&#39;{$v}&#39; class=&#39;download btn btn-warning btn-xs&#39; /></a>  </p></button>";
  }
}
?>
</p>
</body>
<script type="text/javascript">
$(".dir").click(function(){
    var url = $(this).attr("url");
    $.ajax({
        url:"chuli2.php",
        data:{url:url},
        type:"POST",
        dataType:"TEXT",
        success: function(data){
            window.location.href="wenjianceshi.php" rel="external nofollow" rel="external nofollow" ;
          }
      });
  })
$("#prev").click(function(){
  var url = $(this).attr("url");
  $.ajax({
      url:"chuli2.php",
      data:{url:url},
      type:"POST",
      dataType:"TEXT",
      success: function(data){
          window.location.href="wenjianceshi.php" rel="external nofollow" rel="external nofollow" ;
        }
    });
  })</script>
</html>

显示:

上传处理页面upload.php

<?php
if($_FILES["file"]["error"])
{
  echo $_FILES["file"]["error"];
}
else
{
  if($_FILES["file"]["size"]<10240000)
  {
    //防止文件名重复
    $filename = "./a/".time().$_FILES["file"]["name"];
    //转码
    $filename = iconv("UTF-8","gb2312",$filename);
    if(file_exists($filename))
    {
      echo "该文件已存在";
    }
    else
    {
      //保存文件
      move_uploaded_file($_FILES["file"]["tmp_name"],$filename);
      header("location:wenjianchuanshu.php");
    }
  }
  else
  {
    echo "文件类型不对";
  }
}

点击选择文件之后选中了文件会显示:

点击上传即可。

下载处理页面download.php

<?php
$url = $_GET["url"];
$bname = basename($url);
header("Content-type:text/html;charset=utf-8"); 
$file_name="{$bname}"; 
//用以解决中文不能显示出来的问题 
$file_name=iconv("utf-8","gb2312",$file_name); 
$file_sub_path=$_SERVER[&#39;DOCUMENT_ROOT&#39;]; 
$file_path="{$url}"; 
//首先要判断给定的文件存在与否 
if(!file_exists($file_path)){ 
echo "没有该文件"; 
return ; 
} 
$fp=fopen($file_path,"r"); 
$file_size=filesize($file_path); 
//下载文件需要用到的头 
Header("Content-type: application/octet-stream"); 
Header("Accept-Ranges: bytes"); 
Header("Accept-Length:".$file_size); 
Header("Content-Disposition: attachment; filename=".$file_name); 
$buffer=10240000; 
$file_count=0; 
//向浏览器返回数据 
while(!feof($fp) && $file_count<$file_size){ 
$file_con=fread($fp,$buffer); 
$file_count+=$buffer; 
echo $file_con; 
} 
fclose($fp);

点击下载会弹出下载框,然后进行下载即可。

点击文件夹或者上一层的处理页面chuli2.php

<?php
session_start();
$url = $_POST["url"];
$_SESSION["fname"] = $url;

以上就是本文的全部内容,希望对大家的学习有所帮助。


相关推荐:

PHP实现获取并生成数据库字典的方法_php技巧

php使用Header函数,PHP_AUTH_PW和PHP_AUTH_USER做用户验证_php技巧

PHP 随机数 C扩展随机数_php技巧

Atas ialah kandungan terperinci php实现文件上传及下载附带显示文件及目录功能. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn