zoukankan      html  css  js  c++  java
  • php的文件上传及下载,附带显示文件及目录

    主页面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="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{400px;
            margin:0 auto;
            padding:0px;}
        #chuanshu{
            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>&nbsp;&nbsp;</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";
                        }
                });
        })
    $("#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";
                    }
            });
        })</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['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;
  • 相关阅读:
    Android Studio 单刷《第一行代码》系列 05 —— Fragment 基础
    Android Studio 单刷《第一行代码》系列 04 —— Activity 相关
    Android Studio 单刷《第一行代码》系列 03 —— Activity 基础
    Android Studio 单刷《第一行代码》系列 02 —— 日志工具 LogCat
    Android Studio 单刷《第一行代码》系列 01 —— 第一战 HelloWorld
    IDEA 内网手动添加oracle,mysql等数据源,以及server returns invalid timezone错误配置
    eclipse maven设置
    IntelliJ IDE 常用配置
    eclipse maven 常见问题解决方案
    Maven 安装和配置
  • 原文地址:https://www.cnblogs.com/gaobint/p/6774336.html
Copyright © 2011-2022 走看看