<?php
// from php manual page
function formatBytes($val, $digits = 3, $mode = "SI", $bB = "B"){ //$mode == "SI"|"IEC", $bB == "b"|"B"
$si = array("", "K", "M", "G", "T", "P", "E", "Z", "Y");
$iec = array("", "Ki", "Mi", "Gi", "Ti", "Pi", "Ei", "Zi", "Yi");
switch(strtoupper($mode)) {
case "SI" : $factor = 1000; $symbols = $si; break;
case "IEC" : $factor = 1024; $symbols = $iec; break;
default : $factor = 1000; $symbols = $si; break;
}
switch($bB) {
case "b" : $val *= 8; break;
default : $bB = "B"; break;
}
for($i=0;$i<count($symbols)-1 && $val>=$factor;$i++)
$val /= $factor;
$p = strpos($val, ".");
if($p !== false && $p > $digits) $val = round($val);
elseif($p !== false) $val = round($val, $digits-$p);
return round($val, $digits) . " " . $symbols[$i] . $bB;
}
$dir = isset($_REQUEST['lib'])&&$_REQUEST['lib'] == 'yui' ? '../../../' : '../../';
$dir = "D:\\";
$node = isset($_REQUEST['node'])?$_REQUEST['node']:"";
if(strpos($node, '..') !== false){
die('Nice try buddy.');
}
$node = iconv('utf-8', 'gb2312', $node);
$nodes = array();
$d = dir($dir.$node);
$flag=false;
while($f = $d->read()){
if($f == '.' || $f == '..' || substr($f, 0, 1) == '.')continue;
$lastmod = date('M j, Y, g:i a',filemtime($dir.$node.'/'.$f));
if(is_dir($dir.$node.'/'.$f)){
$qtip = 'Type: Folder<br />Last Modified: '.$lastmod;
$nodes[] = array('checked'=>$flag,'text'=>$f, 'id'=>$node.'/'.$f/*, 'qtip'=>$qtip*/, 'cls'=>'folder');
}else{
$size = formatBytes(filesize($dir.$node.'/'.$f), 2);
$qtip = 'Type: JavaScript File<br />Last Modified: '.$lastmod.'<br />Size: '.$size;
$nodes[] = array('checked'=>$flag,'text'=>$f, 'id'=>$node.'/'.$f, 'leaf'=>true/*, 'qtip'=>$qtip, 'qtipTitle'=>$f */, 'cls'=>'file');
}
}
$d->close();
header("Content-Type: text/html; charset=utf-8");
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Cache-Control: post-check=0, pre-check=0", false);
header("Pragma: no-cache");
function jsonText($array)
{
$str = "{";
foreach($array as $key=> $value)
{ if($str != "{") $str.=",";
switch (gettype($value)) {
case 'boolean':
$value=$value ? 'true' : 'false';
$str .= "$key: " .$value;
break;
default:
$value = str_replace("\"", "\\\"", $value);
$str .= "$key: " ."\"$value\"";
break;
}
}
$str .= "}";
return $str;
}
$strNode = "";
foreach($nodes as $key=>$value)
{
$strNode .= jsonText($value) . ",";
}
$strNode = sprintf('[%s]', iconv('gb2312', 'utf-8', rtrim($strNode, ',')));
echo $strNode;
?>
磁盘目录树(EXT-js)



【磁盘目录树(EXT-js)】是一种使用EXT-js库构建的前端应用,它主要用于在Web界面中展示计算机硬盘上的目录结构,使用户能够像在操作系统中那样浏览、选择和操作文件夹。EXT-js是一个强大的JavaScript组件库,提供了丰富的用户界面元素和数据管理功能,使得开发复杂的Web应用变得更加便捷。 在EXT-js中实现磁盘目录树,首先需要理解EXT-js的TreePanel组件。TreePanel是EXT-js中的一个核心组件,用于展现树形数据结构,非常适合用来模拟文件系统的目录结构。它支持动态加载、拖放操作以及多种自定义样式和事件处理。要创建一个磁盘目录树,你需要配置TreePanel的store,将文件系统的目录结构数据加载到其中。 1. **配置TreeStore**:TreeStore是用来存储树形数据的,你需要提供根节点的数据,通常是一个包含子节点信息的对象数组。对于中文目录的支持,确保数据源编码正确,EXT-js默认支持UTF-8编码,可以处理中文字符。 2. **使用NodeInterface**:EXT-js的TreeNode实现了NodeInterface接口,使得每个节点都可以拥有父节点、子节点等属性,方便进行树形结构的操作和遍历。 3. **异步加载**:为了提高性能,通常会使用异步加载技术,只在需要时加载子节点。这可以通过配置TreeStore的proxy属性,使用AjaxSource或TreeProxy来实现。 4. **CheckBox支持**:在目录树节点上添加CheckBox,可以让用户多选目录。这需要在TreeNode的配置中指定`checkbox`属性,并监听`checkchange`事件,以便在用户勾选或取消时执行相应的操作。 5. **事件处理**:EXT-js提供了丰富的事件机制,如`itemclick`、`itemcontextmenu`等,你可以根据需要绑定事件处理器,实现点击目录时打开、右键菜单时的上下文操作等。 6. **自定义图标**:通过设置TreeNode的`icon`属性,可以根据目录的类型或状态显示不同的图标,增强用户体验。 7. **拖放操作**:EXT-js的TreePanel支持拖放功能,可以实现目录的移动和复制。配置`ddGroup`和`draggable`、`droppable`属性,并监听`drop`事件。 8. **权限管理**:如果系统有权限控制需求,可以在获取目录数据时加入权限判断,隐藏或禁用无权限访问的目录。 通过以上步骤,我们可以构建一个功能完善的磁盘目录树。在实际应用中,可能还需要与后端服务器进行交互,获取或保存用户的选择,这就涉及到Ajax通信和JSON数据交换。EXT-js的API文档和社区资源非常丰富,可以帮助开发者解决在实现过程中遇到的问题。 “磁盘目录树(EXT-js)”是一个利用EXT-js的强大功能来呈现和操作文件系统目录的应用,它结合了异步加载、CheckBox选择、事件驱动和拖放操作等特性,为用户提供了一个直观、易用的Web界面。通过深入学习EXT-js的文档和实践,可以创建出更加复杂和个性化的目录树应用。































































- 1

- 粉丝: 96
- 资源: 91
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- php网站服务器之php-7.4.3-nts-Win32-vc15-x64.zip
- 基于LSTM的时间序列模型在风电功率缺失数据补全中的应用
- 东南大学 理论力学期末考试卷与复习要点
- 储能逆变器与VSG技术:孤岛运行、同期并网控制及并离网运行下的蓄电池充放电控制
- 工业控制领域基于PLC的加热炉温度控制器设计与实现
- 东南大学 大学物理I期中考试模拟和复习
- SDL多窗口多线程渲染技术解析
- 清华大学 大学物理 光学和量子物理习题全解
- 西门子1500PLC在汽车焊装自动生产线中的综合应用:硬件结构与编程技巧详解
- MATLAB S-Function实现光伏系统变步长扰动观察法的最大功率点跟踪(MPPT)仿真
- 基于SVG的双馈风机并网模型及短路与低电压穿越仿真实验
- Buzz-0.7.1-windows
- zenmap十种扫描方式
- 基于TP5.0+Vue+ElementUI的悟空CRM-11.0前后端分离PHP设计源码
- 风电调频技术中DFIG双馈风机的自适应控制策略研究
- 电力系统配电网可靠性评估:基于Matlab的最小路算法与非序贯蒙特卡洛算法实现



- 1
- 2
- 3
前往页