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


Posted in PHP onApril 27, 2017

主页面wenjianceshi.php

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<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>
<div id="chuanshu">
  <form role="form" action="upload.php" method="post" enctype="multipart/form-data">
   <div class="form-group">
    <label for="inputfile">文件输入</label>
    <input type="file" name="file" id="inputfile">
   </div>
   <button type="submit" class="btn btn-default">上传</button>
  </form>
</div>
<br /><br /><br />
<div 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='button' id='prev' class='btn waibtn btn-success' url='{$pname}'>返回上一层</button>";
}
//遍历目录下的所有文件显示
$arr = glob($fname."/*");
foreach($arr as $v)
{
  $name = basename($v); //从完整路径中取文件名
  $name = iconv("gbk","utf-8",$name);
  if(is_dir($v))
  {
    echo "<button type='button' class='btn dir waibtn btn-primary' url='{$v}'>{$name}</button>";
  }
  else
  {
    echo "<button type='button' class='btn waibtn item btn-default' url='{$v}'><div class='wjm'>{$name}</div><div class='wjbtn'><a href='download.php? url={$v}'><input type='button' value='下载' url='{$v}' class='download btn btn-warning btn-xs' /></a>  </div></button>";
  }
}
?>
</div>
</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>

显示:

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

上传处理页面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 "文件类型不对";
  }
}

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

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

点击上传即可。

下载处理页面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['DOCUMENT_ROOT']; 
$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 相关文章推荐
如何实现给定日期的若干天以后的日期
Oct 09 PHP
PHP页面间传递参数实例代码
Jun 05 PHP
PHP 开发环境配置(测试开发环境)
Apr 28 PHP
在wamp集成环境下升级php版本(实现方法)
Jul 01 PHP
PHP生成验证码时“图像因其本身有错无法显示”的解决方法
Aug 07 PHP
浅谈php正则表达式中的非贪婪模式匹配的使用
Nov 25 PHP
避免Smarty与CSS语法冲突的方法
Mar 02 PHP
PHP命名空间namespace用法实例分析
Sep 27 PHP
PHP yii实现model添加默认值的方法(两种方法)
Nov 10 PHP
PHP中phar包的使用教程
Jun 14 PHP
Zend Framework框架中实现Ajax的方法示例
Jun 27 PHP
php-app开发接口加密详解
Apr 18 PHP
phpMyAdmin无法登陆的解决方法
Apr 27 #PHP
利用phpexcel对数据库数据的导入excel(excel筛选)、导出excel
Apr 27 #PHP
PHP实现网页内容html标签补全和过滤的方法小结【2种方法】
Apr 27 #PHP
PHP实现的常规正则验证helper公共类完整实例
Apr 27 #PHP
php上传excel表格并获取数据
Apr 27 #PHP
PHP基于SMTP协议实现邮件发送实例代码
Apr 27 #PHP
PHP编程实现多维数组按照某个键值排序的方法小结【2种方法】
Apr 27 #PHP
You might like
php 引用(&amp;)详解
2009/11/20 PHP
Yii2超好用的日期和时间组件(值得收藏)
2016/05/05 PHP
laravel 操作数据库常用函数的返回值方法
2019/10/11 PHP
基于javascript实现文字无缝滚动效果
2016/03/22 Javascript
BootStrap实现手机端轮播图左右滑动事件
2016/10/13 Javascript
Vue学习笔记进阶篇之多元素及多组件过渡
2017/07/19 Javascript
weui框架实现上传、预览和删除图片功能代码
2017/08/24 Javascript
vue服务端渲染的实例代码
2017/08/28 Javascript
js删除对象/数组中null、undefined、空对象及空数组方法示例
2018/11/14 Javascript
微信小程序实现通过js操作wxml的wxss属性示例
2018/12/06 Javascript
详解ES6中的Map与Set集合
2019/03/22 Javascript
微信小程序列表时间戳转换实现过程解析
2019/10/12 Javascript
Vue+Openlayers自定义轨迹动画
2020/09/24 Javascript
vuejs实现下拉框菜单选择
2020/10/23 Javascript
微信小程序自定义tabBar的踩坑实践记录
2020/11/06 Javascript
JavaScript中的Proxy对象
2020/11/27 Javascript
WebStorm无法正确识别Vue3组合式API的解决方案
2021/02/18 Vue.js
[43:24]2018DOTA2亚洲邀请赛3月29日 小组赛A组 LGD VS Liquid
2018/03/30 DOTA
python使用os模块的os.walk遍历文件夹示例
2014/01/27 Python
Python多线程编程(四):使用Lock互斥锁
2015/04/05 Python
详解Django中的ifequal和ifnotequal标签使用
2015/07/16 Python
Python使用 Beanstalkd 做异步任务处理的方法
2018/04/24 Python
Python可变参数*args和**kwargs用法实例小结
2018/04/27 Python
Python如何处理大数据?3个技巧效率提升攻略(推荐)
2019/04/15 Python
python的range和linspace使用详解
2019/11/27 Python
使用opencv识别图像红色区域,并输出红色区域中心点坐标
2020/06/02 Python
详解PyQt5中textBrowser显示print语句输出的简单方法
2020/08/07 Python
一篇文章搞懂python的转义字符及用法
2020/09/03 Python
Nip + Fab官网:英国美容品牌
2019/08/26 全球购物
高中学生自我评价范文
2014/09/23 职场文书
教师群众路线教育实践活动个人对照检查材料
2014/11/04 职场文书
幼儿园六一主持词开场白
2015/05/28 职场文书
高考1977观后感
2015/06/04 职场文书
校运会广播稿
2015/08/19 职场文书
小程序实现文字循环滚动动画
2021/06/14 Javascript
JS实现简单九宫格抽奖
2022/06/28 Javascript