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

功能介绍:

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

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

文件和目录重命名

点击删除按钮

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

批量上传文件

粘贴上传

复制文件夹、文件或图片

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

批量上传文件和文件夹

数据库记录

文件和目录下载

批量下载

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

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

点击全部下载,开始下载

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

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

数据库记录

工程截图

文件块处理代码

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 utils\FileBlockWriter;

$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

xpi:http://t.cn/Ai9pubUc

crx:http://t.cn/Ai9pmrcy

exe:http://t.cn/Ai9puobe

示例下载:

php: http://t.cn/Ai9p3CKQ

在线教程:

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

最新文章

  1. Hibernatel框架关联映射
  2. RunLoop-Custom input source
  3. :target伪类制作tab选项卡
  4. 细说IIS异常日志 — 你必须知道的功能
  5. jdk版本及编译版本导致服务器部署UnsupportedClassVersionError错误
  6. JQuery正则验证
  7. 使用jQuery向asp.net Mvc传递复杂json数据-ModelBinder篇
  8. Mysql-字段类型
  9. myeclipse下安装svn
  10. js获取url的参数值
  11. PLSQL_性能优化工具系列10_Automatic Database Diagnostic Monitor - ADDM
  12. 了解ThinkPHP(一)
  13. win8笔记本无法搜索wifi信号找不到WLAN该 wifi共享特别注意的服务
  14. 【转】单独编译android framework模块出现的问题
  15. c语言 (linux下)
  16. Groovy中那些神奇注解之Memoized
  17. sql server 查看表的行数
  18. 使用dropwizard(3)-加入DI-dagger2
  19. JavaScript提高篇之面向对象之单利模式工厂模型构造函数原型链模式
  20. HDTV(1920x1080)码率和视频质量关系的研究 2 (实验结果)

热门文章

  1. git 账号密码
  2. 记录截取tableview图的方法
  3. Luogu P3527 [POI2011]MET-Meteors 整体二分
  4. PHP mysqli_fetch_field_direct() 函数
  5. http communication process
  6. SSO 断点登陆
  7. 还是畅通工程(HDU 1233)
  8. P1359 租用游艇 &amp;&amp; P3905 道路重建 ------Floyd算法
  9. BDD行为驱动简介及Pytest-bdd基础使用
  10. Python回归分析五部曲(二)—多重线性回归