+ -
当前位置:首页 → 问答吧 → 迟来的生日礼物(资源管理器修改于18日-21日)_____送给我

迟来的生日礼物(资源管理器修改于18日-21日)_____送给我

时间:2007-01-21

来源:互联网

今天22日修改了下"打包下载",压缩后的文件无损

帐号admin
密码admin
修改于18日-21日
增加了两个文件
task.php和js文件

这次几乎所有文件都大改了,

除了task.php、js文件、edit.php比较乱(未来打算把task.php和edit.php合并成一个文件,优化一下代码),

其它的自我感觉良好,尤其是function.php文件,想打击偶的不要和我说

还有,相比前两个版本,唯一不足的是只兼容IE浏览器,希望高手指点,能突破浏览器的限制

由于修改量大,暂时比较凌乱,不过我在寒假时间还会修改,

我家在农村,电脑没上网,

寒假不能到这个论坛来走走了,

各位支持我的,下载我的代码后,有兴趣看看我的代码,提点建议,这是我最希望的

来年开学希望能看到你们许多建议...

[ 本帖最后由 muqiao 于 2007-1-22 19:21 编辑 ]
2.jpg (83.17 KB)

2007-1-21 07:38

3.jpg (82.46 KB)

2007-1-21 07:38

4.jpg (95.72 KB)

2007-1-21 07:38

5.jpg (78.74 KB)

2007-1-21 07:38

source.rar (163.76 KB)

2007-1-22 19:21, 下载次数: 493

作者: muqiao   发布时间: 2007-01-21

#
#文件任务
#
#编辑(双击/右键打开)   判断文件是否可编辑  -true -> (已搞定)
                                                                 -false-> 弹出非警告框

#拷贝   session记录粘贴任务 $_SESSION['readystick'][0] = $_POST['path'];//路径  $_SESSION['readystick'][1] = "copy";//类型

#剪切   判断文件是否可移动  -true ->
session记录粘贴任务$_SESSION['readystick'][0] = $_POST['path'];//路径$_SESSION['readystick'][1] = "scissor";//类型
                            -false-> 弹出警告框

#回收   判断文件是否可回收  -true -> 弹出是否警告框
                             -false-> 弹出非警告框

#删除   判断文件是否可删除  -true -> 弹出是否警告框
                             -false-> 弹出非警告框

#重命名 判断文件是否可重命名-true -> 弹出重名名窗口 -> 提交重命名
                            -false-> 弹出非警告框

#属性   表单形式传递(path)到php文件->返回content->弹出content窗口

#下载   直接下载

#
#文件夹任务
#

#打开   window.location()

#拷贝    session记录粘贴任务 $_SESSION['readystick'][0] = $_POST['path'];//路径  $_SESSION['readystick'][1] = "copy";//类型

#剪切   判断文件是否可移动  -true ->
session记录粘贴任务$_SESSION['readystick'][0] = $_POST['path'];//路径$_SESSION['readystick'][1] = "scissor";//类型
                            -false-> 弹出警告框

#删除   判断文件夹是否可删除-true -> 弹出是否警告框
                             -false-> 弹出非警告框

#回收   判断文件是否可回收  -true -> 弹出是否警告框
                             -false-> 弹出非警告框

#重命名 判断是否可重命名    -true -> 弹出重名名窗口 -> 提交重命名
                            -false-> 弹出非警告框

#属性   表单形式传递(path)到php文件->返回content->弹出content窗口

#打包下载 表单形式传递(path)到php文件->打包成文件pathname.zip->直接下载pathname.zip

#
#回收站任务
#

#打开   (已搞定)

#属性   表单形式传递(path)到php文件->返回content->弹出content窗口

#清空    弹出是否警告框->delpath函数清空

#打包下载 表单形式传递(path)到php文件->打包成文件pathname.zip->直接下载pathname.zip

#
#body任务
#

#新文件夹 弹出新文件夹名窗口->创建文件夹-success->header(当前path)
                                        -failed ->返回警告content到parent->弹出content窗口

#新文件   弹出新文件名窗口  ->创建文件  -success->header(当前path)
                                        -failed ->返回警告content到parent->弹出content窗口

#粘贴     判断是否有粘贴任务-> -true -> 开始粘贴->unset(session粘贴任务)
                               -false-> 弹出无粘贴任务警告框

#上传文件 弹出设定要上传的文件数的窗口->完毕返回未上传、成功上传的content到parent->弹出content窗口

#属性     表单形式传递(path)到php文件->返回content->弹出content窗口

#刷新     location.reload();

作者: muqiao   发布时间: 2007-01-21

:)

作者: thankwsx   发布时间: 2007-01-21

看来不错啊
学习学习

作者: yang_ysb   发布时间: 2007-01-21

作者: cator   发布时间: 2007-01-21

给个演示地址

如果没有空间的话发站内短信给偶,我把它放我空间上去。

作者: Phzzy   发布时间: 2007-01-21

学习...支持LZ...:D

作者: suturn-ly   发布时间: 2007-01-21

引用:
原帖由 Phzzy 于 2007-1-21 12:38 发表
给个演示地址

如果没有空间的话发站内短信给偶,我把它放我空间上去。
支持~~

作者: finian   发布时间: 2007-01-21

压缩整个目录压缩整个目录函数改成下面,今天22日的成果,当然,核心内容是搜的,看都看不懂,别说写了
复制PHP内容到剪贴板
PHP代码:
class ZipAllFloder{//压缩整个目录
    var $cachelist = array();
    var $datasec      = array();  
    var $ctrl_dir     = array();  
    var $eof_ctrl_dir = "\x50\x4b\x05\x06\x00\x00\x00\x00";  
    var $old_offset   = 0;  
    
    function StartWork($dir){
        $result = $this->GetList($dir);
        $this->ClearCache();
        return $result;
    } 
    function ReadAndExport($filelist,$zipfilename){  
        if (count($filelist)>0){  
            foreach($filelist as $filename){  
                if (is_file($filename)){  
                    $fp = fopen ($filename, "r");  
                    $content = @fread ($fp,filesize($filename));  
                    fclose ($fp);  
                    $filename = basename($filename);  
                    $this -> addFile($content, $filename);  
                }  
            }  
        }else{
            $this -> addFile("This folder have none a single file!","nofile.log");
        }
        $out = $this -> outfile(); 
        $this -> IniVars();
        $fp = fopen($zipfilename,"w");  
        fwrite($fp,$out,strlen($out));  
        fclose($fp);
        $this -> cachelist[] = $zipfilename; 
    }
    function GetList($dir){  
        if (file_exists($dir)){  
            $handle = opendir($dir); 
            while($files = readdir($handle)){  
                if (($files==".")||($files=="..")) continue; 
                if(is_dir($dir."/".$files)){
                    $this -> GetList($dir."/".$files);
                }else{
                    $filelist[] = $dir."/".$files; 
                } 
            }  
            closedir($handle);
            $zipfilename = dirname($dir)."/[FOLDER]".basename($dir).".zip";
            $this -> ReadAndExport($filelist,$zipfilename);
        }  
        return $zipfilename;  
    }  
    function ClearCache(){
        if($num = count($this ->cachelist)){
            for($i=0;$i<$num-1;$i++){
                @unlink($this ->cachelist[$i]);
            }
        }
    }
    function IniVars(){
        $this -> datasec = array();
        $this -> ctrl_dir = array();
        $this -> eof_ctrl_dir = "\x50\x4b\x05\x06\x00\x00\x00\x00";
        $this -> old_offset   = 0;
    }
    function unix2DosTime($unixtime = 0) {  
        $timearray = ($unixtime == 0) ? getdate() : getdate($unixtime);  
        if ($timearray['year'] < 1980) {  
            $timearray['year']    = 1980;  
            $timearray['mon']     = 1;  
            $timearray['mday']    = 1;  
            $timearray['hours']   = 0;  
            $timearray['minutes'] = 0;  
            $timearray['seconds'] = 0;  
        }
        return (($timearray['year']-1980)<<25)|($timearray['mon']<<21)|($timearray['mday']<<16)|($timearray['hours']<<11)|($timearray['minutes']<<5)|($timearray['seconds']>>1);  
    }
    function addFile($data, $name, $time = 0){  
        $name = str_replace('\\', '/', $name);  
        $dtime = dechex($this->unix2DosTime($time));  
        $hexdtime = '\x' . $dtime[6] . $dtime[7]  
                  . '\x' . $dtime[4] . $dtime[5]  
                  . '\x' . $dtime[2] . $dtime[3]  
                  . '\x' . $dtime[0] . $dtime[1];  
        eval('$hexdtime = "' . $hexdtime . '";');  
        $fr   = "\x50\x4b\x03\x04";  
        $fr   .= "\x14\x00";
        $fr   .= "\x00\x00";
        $fr   .= "\x08\x00";
        $fr   .= $hexdtime; 
        $unc_len = strlen($data);  
        $crc     = crc32($data);  
        $zdata   = gzcompress($data);  
        $c_len   = strlen($zdata);  
        $zdata   = substr(substr($zdata, 0, strlen($zdata) - 4), 2);
        $fr      .= pack('V', $crc);
        $fr      .= pack('V', $c_len);
        $fr      .= pack('V', $unc_len);
        $fr      .= pack('v', strlen($name));
        $fr      .= pack('v', 0);
        $fr      .= $name;  
        $fr .= $zdata;  
        $fr .= pack('V', $crc);
        $fr .= pack('V', $c_len);
        $fr .= pack('V', $unc_len);
        $this -> datasec[] = $fr;  
        $new_offset        = strlen(implode('', $this->datasec));  
        $cdrec = "\x50\x4b\x01\x02";  
        $cdrec .= "\x00\x00";
        $cdrec .= "\x14\x00";
        $cdrec .= "\x00\x00";
        $cdrec .= "\x08\x00";
        $cdrec .= $hexdtime;
        $cdrec .= pack('V', $crc);
        $cdrec .= pack('V', $c_len);
        $cdrec .= pack('V', $unc_len);
        $cdrec .= pack('v', strlen($name) );
        $cdrec .= pack('v', 0 );
        $cdrec .= pack('v', 0 );
        $cdrec .= pack('v', 0 );
        $cdrec .= pack('v', 0 );
        $cdrec .= pack('V', 32 );
        $cdrec .= pack('V', $this -> old_offset );
        $this -> old_offset = $new_offset;  
        $cdrec .= $name;  
        $this -> ctrl_dir[] = $cdrec;  
    }
    function outfile(){  
        $data    = implode('', $this -> datasec);  
        $ctrldir = implode('', $this -> ctrl_dir);  
        return  
            $data .  
            $ctrldir .  
            $this -> eof_ctrl_dir .  
            pack('v', sizeof($this -> ctrl_dir)) .
            pack('v', sizeof($this -> ctrl_dir)) .
            pack('V', strlen($ctrldir)) .
            pack('V', strlen($data)) .
            "\x00\x00";
    }
}

作者: muqiao   发布时间: 2007-01-22

1月24日升级"打包下载"

作者: muqiao   发布时间: 2007-01-24

function.php中压缩类改动如下

相应的task.php文件中有几个要改
复制PHP内容到剪贴板
PHP代码:
class ZipAllFloder{//压缩文件夹
    
    var $datasec      = array();
    var $ctrl_dir     = array();
    var $eof_ctrl_dir = "\x50\x4b\x05\x06\x00\x00\x00\x00";
    var $old_offset   = 0; 
    var $dirs         = array(".");
    function IniVars(){//初始化变量
        $this -> datasec      = array();
        $this -> ctrl_dir     = array();
        $this -> eof_ctrl_dir = "\x50\x4b\x05\x06\x00\x00\x00\x00";
        $this -> old_offset   = 0;
        $this -> dirs         = array(".");
    }
    function ZipFolder($dir,$zipfilename){//压缩一个文件夹 
        if(substr($dir,0,2)=="./"){
                $dir = substr($dir,2);
        }elseif(substr($dir,0,1)=="/"){
                $dir = substr($dir,1);
        }
        $this->AddFolderContent($dir);
        $out = $this -> get_file();
        $this -> IniVars();
        $fp = fopen($zipfilename,"w");  
        fwrite($fp,$out,strlen($out));  
        fclose($fp);
    }
    
    function AddFolderContent($dir){//添加文件夹中文件列表到 $this->dirs
        if(is_dir($dir)){
            if(!in_array($dir,$this->dirs)){
                $this->add_Dir($dir);
            }
            $handle = opendir($dir);
            while($files = readdir($handle)){
                if (($files==".")||($files=="..")) continue; 
                if(is_dir($dir."/".$files)){
                    $this->AddFolderContent($dir."/".$files);
                }else{
                    $fp = fopen ($dir."/".$files,"r");
                    $content = @fread ($fp,filesize($dir."/".$files));  
                    fclose ($fp);  
                    $this->add_File($content,$dir."/".$files);
                }
            }  
            closedir($handle);
        }
    }
    
    function ZipFileArray($files,$zipfilename){//混杂压缩 文件和文件夹并排压缩
        if(!is_array($files)){ 
            $files = array($files);
        }
        for($i=0;$files[$i];$i++){//这儿用的很妙!我看到这种使用方法时,大吃一惊,第一次在这用
            $fn = $files[$i];
            if(substr($fn,0,2)=="./"){
                $fn = substr($fn,2);
            }elseif(substr($fn,0,1)=="/"){
                $fn = substr($fn,1);
            }
            if(!in_array(dirname($fn),$this->dirs)){
                $this->add_Dir(dirname($fn));
            }
            if(basename($fn)&&is_file($fn)){
                $fp   = fopen ($fn, "r");  
                $data = @fread ($fp,filesize($fn));  
                fclose ($fp);
                $this->add_File($data,$fn);
            }elseif(basename($fn)&&is_dir($fn)){
                $this->AddFolderContent($fn);
            }
        }
        $out = $this -> get_file();
        $this -> IniVars();
        $fp = fopen($zipfilename,"w");  
        fwrite($fp,$out,strlen($out));  
        fclose($fp);
    }
    
    function get_file(){//获得压缩文件数据
        $data = implode('', $this -> datasec);
        $ctrldir = implode('', $this -> ctrl_dir);
        return $data . $ctrldir . $this -> eof_ctrl_dir .
        pack('v', sizeof($this -> ctrl_dir)).pack('v', sizeof($this -> ctrl_dir)).
        pack('V', strlen($ctrldir)) . pack('V', strlen($data)) . "\x00\x00";
    }
    
    function add_dir($name){ 
        $name   = str_replace("\\", "/", $name); 
        $fr     = "\x50\x4b\x03\x04\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00"; 
        $fr    .= pack("V",0).pack("V",0).pack("V",0).pack("v", strlen($name) ); 
        $fr    .= pack("v", 0 ).$name.pack("V", 0).pack("V", 0).pack("V", 0); 
        $this -> datasec[] = $fr;
        $new_offset = strlen(implode("", $this->datasec)); 
        $cdrec = "\x50\x4b\x01\x02\x00\x00\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00"; 
        $cdrec .= pack("V",0).pack("V",0).pack("V",0).pack("v", strlen($name) ); 
        $cdrec .= pack("v", 0 ).pack("v", 0 ).pack("v", 0 ).pack("v", 0 ); 
        $ext = "\xff\xff\xff\xff"; 
        $cdrec .= pack("V", 16 ).pack("V", $this -> old_offset ).$name; 
        $this -> ctrl_dir[] = $cdrec; 
        $this -> old_offset = $new_offset; 
        $this -> dirs[] = $name;
    }
    
    function add_File($data, $name, $compact = 1){
        $name     = str_replace('\\', '/', $name);
        $dtime    = dechex($this->DosTime());
        $hexdtime = '\x' . $dtime[6] . $dtime[7].'\x'.$dtime[4] . $dtime[5] . '\x' . $dtime[2] . $dtime[3].'\x'.$dtime[0].$dtime[1];
        eval('$hexdtime = "' . $hexdtime . '";');
        if($compact){
            $fr = "\x50\x4b\x03\x04\x14\x00\x00\x00\x08\x00".$hexdtime;
        }else{
            $fr = "\x50\x4b\x03\x04\x0a\x00\x00\x00\x00\x00".$hexdtime;
        }
        $unc_len = strlen($data); $crc = crc32($data);
        if($compact){
            $zdata = gzcompress($data); $c_len = strlen($zdata);
            $zdata = substr(substr($zdata, 0, strlen($zdata) - 4), 2);
        }else{
            $zdata = $data;
        }
        $c_len=strlen($zdata);
        $fr .= pack('V', $crc).pack('V', $c_len).pack('V', $unc_len);
        $fr .= pack('v', strlen($name)).pack('v', 0).$name.$zdata;
        $fr .= pack('V', $crc).pack('V', $c_len).pack('V', $unc_len);
        $this -> datasec[] = $fr;
        $new_offset        = strlen(implode('', $this->datasec));
        if($compact){
            $cdrec = "\x50\x4b\x01\x02\x00\x00\x14\x00\x00\x00\x08\x00";
        }else{ 
            $cdrec = "\x50\x4b\x01\x02\x14\x00\x0a\x00\x00\x00\x00\x00";
        }
        $cdrec .= $hexdtime.pack('V', $crc).pack('V', $c_len).pack('V', $unc_len);
        $cdrec .= pack('v', strlen($name) ).pack('v', 0 ).pack('v', 0 );
        $cdrec .= pack('v', 0 ).pack('v', 0 ).pack('V', 32 );
        $cdrec .= pack('V', $this -> old_offset );
        $this -> old_offset = $new_offset;
        $cdrec .= $name;
        $this -> ctrl_dir[] = $cdrec;
        return true;
    }
    
    function DosTime() {
        $timearray = getdate();
        if ($timearray['year'] < 1980) {
            $timearray['year'] = 1980; $timearray['mon'] = 1;
            $timearray['mday'] = 1; $timearray['hours'] = 0;
            $timearray['minutes'] = 0; $timearray['seconds'] = 0;
        }
        return (($timearray['year']-1980)<<25)|($timearray['mon']<<21)|($timearray['mday']<<16)|($timearray['hours']<<11)|($timearray['minutes']<<5)|($timearray['seconds']>>1);
    }
}

作者: muqiao   发布时间: 2007-01-24

作者: yyb   发布时间: 2007-02-08

顶起``````

作者: 绿竹居   发布时间: 2007-02-08

支持一下高手

作者: 淘园君   发布时间: 2007-02-15

作者: betterp   发布时间: 2007-03-08

建议:
把那个文件的根目录可以自定义。而不是一定要用这个php文件存放的路径做为根目录

作者: betterp   发布时间: 2007-03-08