zoukankan      html  css  js  c++  java
  • php上传文件夹

    用过浏览器的开发人员都对大文件上传与下载比较困扰,之前遇到了一个php文件夹上传下载的问题,无奈之下自己开发了一套文件上传控件,在这里分享一下。希望能对你有所帮助。

    功能介绍:

    树形目录导航。您可以通过树型目录导航和路径导航栏快速跳转到指定目录。在跳转后树型目录将会自动选中当前的目录。

     

     

    路径导航,点击根目录按钮便可返根目录

     

     

    文件和目录重命名

     

    点击删除按钮

    说明: http://qqadapt.qpic.cn/adapt/0/a08d8c16-78a3-7ce5-c2cd-5df1e60fb8cc/800?pt=0&ek=1&kp=1&sce=0-12-12

    点击确定后,页面中的文件消失



     

     

    批量上传文件

     

    粘贴上传

    复制文件夹、文件或图片

    说明: http://qqadapt.qpic.cn/adapt/0/ab61b9d4-755b-ee18-376d-f4ac80ad6417/800?pt=0&ek=1&kp=1&sce=0-12-12

    在页面中选择好相应的上传目录,点击粘贴上传按钮,数据即可快速开始上传

    说明: http://qqadapt.qpic.cn/adapt/0/b9fa01e5-ebec-3887-6726-67dcbc1a77ef/800?pt=0&ek=1&kp=1&sce=0-12-12



     

     

    批量上传文件和文件夹

     

     

    数据库记录

     

     

    文件和目录下载

     

    批量下载

    同时选择多个需要下载的文件 

    然后点击下载按钮,设置下载目录文件夹

    说明: C:UsersAdministratorDesktop2222.png



     

     

    点击全部下载,开始下载

     

     

    自动加载未上传完的任务。在刷新浏览器或重启电脑后仍然可以自动加载未完成的任务。

     

     

    下载完成后打开我们设置的下载目录文件夹,发现需下载的文件或文件夹确认已下载成功,经确认文件夹内的内容与下载文件夹内容一致

    说明: http://qqadapt.qpic.cn/adapt/0/3224196a-396c-8ee1-b509-3179302fbd86/800?pt=0&ek=1&kp=1&sce=0-12-12

     

    数据库记录

     

    工程截图

    文件块处理代码

    https://blog.csdn.net/alisky119/article/details/91491383

    <?php

    ob_start();

    /*

        控件每次向此文件POST数据

        逻辑:

             1.更新数据库进度

             2.将文件块数据保存到服务器中。

        更新记录:

             2014-04-09 增加文件块验证功能。

             2017-07-11

                 简化文件块逻辑,

                 取消进度更新操作

    */

    require '../vendor/autoload.php';

    require('biz/up6_biz_event.php');

    require('model/FileInf.php');

    require('utils/FileBlockWriter.php');

    require('utils/HttpHeader.php');

    require('utils/PathTool.php');

     

    use utilsFileBlockWriter;

     

    $head = new HttpHeader();

     

    $uid         = $head->param("uid");

    $fid         = $head->param("id");

    $md5         = $head->param("md5");

    $lenSvr           = $head->param("lenSvr");

    $lenLoc           = $head->param("lenLoc");

    $blockOffset = $head->param("blockOffset");

    $blockSize        = $head->param("blockSize");

    $blockIndex       = $head->param("blockIndex");

    $blockMd5         = $head->param("blockMd5");

    $complete         = (bool)$head->param("complete");

    $pathSvr     = $_POST["pathSvr"];

    $pathSvr     = PathTool::urldecode_path($pathSvr);

    $pathTmp     = $_FILES['file']['tmp_name'];//

     

    //相关参数不能为空

    if (   (strlen($lenLoc)>0)

        && (strlen($uid)>0)

        && (strlen($fid)>0)

        && (strlen($blockOffset)>0)

        && !empty($pathSvr))

    {

        $verify = false;

        $msg = "";

        $md5Svr = "";

       

        if(!empty($blockMd5))

        {

            $md5Svr = md5_file($pathTmp);

        }

       

        //验证大小

        $verify = intval($blockSize) == filesize($pathTmp);

        if( !$verify )

        {

            $msg = "block size error sizeSvr:" filesize($pathTmp) . " sizeLoc:" . $blockSize;

        }

       

        if( $verify && !empty($blockMd5) )

        {

             $verify = $md5Svr == $blockMd5;

             if(!$verify) $msg = "block md5 error";

        }

       

        if( $verify )

        {

             //保存文件块数据

             $fbw = new FileBlockWriter();

             if(0 == strcmp($blockIndex,"1")) $fbw->CreateFile($pathSvr,$lenLoc);

             $fbw->write($blockOffset, $lenLoc, $pathSvr, $pathTmp);

            

             up6_biz_event::file_post_block($fid, $blockIndex);

            

             $obj = Array('msg'=>'ok''md5'=>$md5Svr, 'offset'=>$blockOffset);

             $msg = json_encode($obj);

        }

        ob_clean();

        echo $msg;

    }

    else

    {

        echo "param is null";

        echo "uid:$uid<br/>";

        echo "fid:$fid<br/>";

        echo "md5:$md5<br/>";

        echo "lenSvr:$lenSvr<br/>";

        echo "lenLoc:$lenLoc<br/>";

        echo "f_pos:$blockOffset<br/>";

        echo "complete:$complete<br/>";

        echo "pathSvr:$pathSvr<br/>";

    }

    header('Content-Length: ' ob_get_length());

    ?>

    控件包下载:
    cab(x86)
    http://t.cn/Ai9pmG8S

    cab(x64)http://t.cn/Ai9pm04B

    xpihttp://t.cn/Ai9pubUc

    crxhttp://t.cn/Ai9pmrcy

    exehttp://t.cn/Ai9puobe

     

    示例下载:

    php: http://t.cn/Ai9p3CKQ

     

    在线教程:

    php-文件管理器教程:http://j.mp/2MudPs3

  • 相关阅读:
    java实现 n人过桥问题
    git:rebase的原理
    注解@ConfigurationProperties使用方法
    docker+mysql 更改配置后重启不了的解决方案
    docker+mysql 构建数据库的主从复制
    Linux 踩坑记
    OSS上传图片无法在线预览的解决方案
    Linux中du、df显示不一致问题
    zookeeper作配置中心(存储支付信息)
    @Configuration结合@Bean实现对象的配置
  • 原文地址:https://www.cnblogs.com/xproer/p/11008538.html
Copyright © 2011-2022 走看看