렌더링:
PHP 코드
코드 복사 코드는 다음과 같습니다.
php
error_reporting(E_ALL & ~E_NOTICE)
ini_set('memory_limit', '2048M')
echo "압축할 파일 또는 디렉터리 선택:
$fdir = opendir('./');
while($file=readdir($fdir))
{
if($file=='.'|| $file=='..')
계속;
echo "
";
if(is_file($file))
{
echo "
2 $file
}
else
{
echo "0 $file
";
}
}
?>
다음 파일 형식을 포함합니다:
(파일 형식은 "|"로 구분됩니다. 기본적으로 파일이 비어 있으면 모든 파일이 포함됩니다. 예: 패키지해야 하는 경우 php 및 jpg 파일인 경우 "php |jpg"를 입력합니다.
압축 파일을 다음 디렉토리에 저장합니다.
(이 디렉토리는 비워두세요. 쓰기 권한이 있어야 합니다.)
글꼴>
압축 파일 이름:
;font color="red">
(.zip)
}
//수정 시간 형식을 반환합니다.
//이 클래스 내부 함수 호출에만 해당
function unix2DosTime($unixtime = 0)
{
$timearray = ($unixtime == 0) : getdate ($unixtime);
if ($timearray ['연도'] < 1980)
{
$timearray['연도'] = 1980
$timearray['mon'] = 1 ;
$timearray['mday'] = 1;
$timearray['시간'] = 0
$timearray['분'] = 0; = 0;
}
return ( ($timearray['연도'] - 1980) << 25) | ($timearray['mon'] << 21) | mday'] << 16) | ($ timearray['시간'] << 11) ($timearray['분'] << 5) | > 1);
}
//파일을 초기화하고, 파일 디렉터리를 생성하고,
//파일의 쓰기 권한을 반환합니다.
function startfile($path = 'dodo.zip ')
{
$this->gzfilename =$path;
$mypathdir=array()
do
{
$mypathdir[] = $path = dirname( $path);
} while($path != ' .');
@end($mypathdir)
do
{
$path = @current($mypathdir);
@mkdir($path);
} while (@prev($mypathdir))
if($this->fp=@fopen($this->gzfilename,"w") )
{
return true;
}
return false
}
//zip 패키지에 파일을 추가합니다.
function addfile($data, $name)
{
$name = str_replace('\ ', '/', $name)
if(strrchr($name,'/')=='/')
return $this ->adddir($name);
if( !empty($this->filefilters))
{
if (!in_array(end(explode(".",$name)), $this->filefilters))
{
return
}
}
$dtime = decex($this->unix2DosTime());
$hexdtime = 'x' . $dtime[6] . $dtime[7] . '엑스' . $dtime[4] . $dtime[5] . '엑스' . $dtime[2] . $dtime[3] . '엑스' . $dtime[0] . $dtime[1];
eval('$hexdtime = "' . $hexdtime . '";');
$unc_len = strlen($data);
$crc = crc32($data);
$zdata = gzcompress($data);
$c_len = strlen($zdata);
$zdata = substr(substr($zdata, 0, strlen($zdata) - 4), 2);
//새로운添文件内容格式化:
$datastr = "x50x4bx03x04";
$datastr .= "x14x00"; //
$datastr .= "x00x00";을 추출하는 데 필요한 버전입니다. // 생성 목적 비트 플래그
$datastr .= "x08x00"; // 압축 방법
$datastr .= $hexdtime; // 마지막 수정 시간 및 날짜
$datastr .= pack('V', $crc); // crc32
$datastr .= pack('V', $c_len); // 압축된 파일 크기
$datastr .= pack('V', $unc_len); // 압축되지 않은 파일 크기
$datastr .= pack('v', strlen($name)); // 파일 이름 길이
$datastr .= pack('v', 0); // 추가 필드 길이
$datastr .= $name;
$datastr .= $zdata;
$datastr .= pack('V', $crc); // crc32
$datastr .= pack('V', $c_len); // 압축된 파일 크기
$datastr .= pack('V', $unc_len); // 압축되지 않은 파일 크기
fwrite($this->fp,$datastr); //새로운 내용의 문서
$my_datastr_len = strlen($datastr);
설정 해제($datastr);
//새로운添文件目录信息
$dirstr = "x50x4bx01x02";
$dirstr .= "x00x00"; //
$dirstr이 만든 버전 .= "x14x00"; //
$dirstr .= "x00x00"을 추출하는 데 필요한 버전; // 생성 목적 비트 플래그
$dirstr .= "x08x00"; // 압축 방법
$dirstr .= $hexdtime; // 마지막 수정 시간 및 날짜
$dirstr .= pack('V', $crc); // crc32
$dirstr .= pack('V', $c_len); // 압축된 파일 크기
$dirstr .= pack('V', $unc_len); // 압축되지 않은 파일 크기
$dirstr .= pack('v', strlen($name) ); // 파일 이름 길이
$dirstr .= pack('v', 0 ); // 추가 필드 길이
$dirstr .= pack('v', 0 ); // 파일 주석 길이
$dirstr .= pack('v', 0 ); // 디스크 번호 시작
$dirstr .= pack('v', 0 ); // 내부 파일 속성
$dirstr .= pack('V', 32 ); // 외부 파일 속성 - 'archive' 비트 세트
$dirstr .= pack('V',$this->datastr_len ); // 로컬 헤더의 상대 오프셋
$dirstr .= $name;
$this->dirstr .= $dirstr; //目录信息
$this -> 파일_개수;
$이것 -> dirstr_len = strlen($dirstr);
$이것 -> datastr_len = $my_datastr_len;
}
function adddir($name)
{
$name = str_replace("\", "/", $name);
$datastr = "x50x4bx03x04x0ax00x00x00x00x00x00x00x00x00";
$datastr .= pack("V",0).pack("V",0).pack("V",0).pack("v", strlen($name) );
$datastr .= pack("v", 0 ).$name.pack("V", 0).pack("V", 0).pack("V", 0);
fwrite($this->fp,$datastr); //새로운 내용의 문서
$my_datastr_len = strlen($datastr);
설정 해제($datastr);
$dirstr = "x50x4bx01x02x00x00x0ax00x00x00x00x00x00x00x00x00";
$dirstr .= pack("V",0).pack("V",0).pack("V",0).pack("v", strlen($name) );
$dirstr .= pack("v", 0 ).pack("v", 0 ).pack("v", 0 ).pack("v", 0 );
$dirstr .= pack("V", 16 ).pack("V",$this->datastr_len).$name;
$this->dirstr .= $dirstr; //目录信息
$this -> 파일_개수;
$이것 -> dirstr_len = strlen($dirstr);
$이것 -> datastr_len = $my_datastr_len;
}
function createfile()
{
//压缩包结束信息,包括文件总数,目录信息读取指针位置等信息
$endstr = "x 50x4bx05x06x00x00x00x00" .
pack('v', $this -> file_count) .
pack('v', $this -> file_count) .
pack('V', $this -> dirstr_len) .
pack('V', $this -> datastr_len) .
"x00x00";
fwrite($this->fp,$this->dirstr.$endstr);
fclose($this->fp);
}
}
if(!trim($_REQUEST[zipname]))
$_REQUEST[zipname] = "dodozip.zip";
그 외
$_REQUEST[zipname] = Trim($_REQUEST[zipname]);
if(!strrchr(strtolower($_REQUEST[zipname]),'.')=='.zip')
$_REQUEST[zipname] .= ".zip";
$_REQUEST[todir] = str_replace('\','/',trim($_REQUEST[todir]));
if(!strrchr(strtolower($_REQUEST[todir]),'/')=='/')
$_REQUEST[todir] .= "/";
if($_REQUEST[todir]=="/")
$_REQUEST[todir] = "./";
함수 목록 파일($dir=".")
{
global $dodozip;
$sub_file_num = 0;
if(is_file("$dir"))
{
if(realpath($dodozip ->gzfilename)!=realpath("$dir"))
{
$dodozip -> addfile(implode('',file("$dir")),"$dir");
1을 반환합니다.
}
0을 반환합니다.
}
$handle=opendir("$dir");
while ($file = readdir($handle))
{
if($file=="."||$file=="..")
계속;
if(is_dir("$dir/$file"))
{
$sub_file_num = listfiles("$dir/$file");
}
else
{
if(realpath($dodozip ->gzfilename)!=realpath("$dir/$file"))
{
$dodozip -> ; addfile(implode('',file("$dir/$file")),"$dir/$file");
$sub_file_num ;
}
}
}
closedir($handle);
if(!$sub_file_num)
$dodozip -> addfile("","$dir/");
$sub_file_num 반환;
}
함수 num_bitunit($num)
{
$bitunit=array(' B',' KB',' MB',' GB');
for($key=0;$key{
if($num>=pow(2,10*$key)-1)
{ //1023B 1KB
$num_bitunit_str=(ceil($num/pow(2,10*$key)*100)/100)." $bitunit[$key]";
}
}
$num_bitunit_str 반환;
}
if(is_array($_REQUEST[dfile]))
{
$dodozip = new PHPzip;
if($_REQUEST["file_type"] != NULL)
$dodozip -> SetFileFilter($_REQUEST["file_type"]);
if($dodozip -> startfile("$_REQUEST[todir]$_REQUEST[zipname]"))
{
echo "정재添加压缩文件...
";
$filenum = 0;
foreach($_REQUEST[dfile] as $file)
{
if(is_file($file))
{
if(!empty($dodozip -> filefilters))
if (!in_array(end(explode(".",$file)), $dodozip -> filefilters))
계속;
echo "2 $file
";
}
else
{
echo "0 $file
";
}
$filenum = 목록파일($file);
}
$dodozip -> 파일 생성();
echo "
压缩完成,共添加 $filenum 个文件.
$_REQUEST[todir]$_REQUEST[zipname] (".num_bitunit(filesize("$_REQUEST[todir]$_REQUEST[zipname]")).")";
}
else
{
echo "$_REQUEST[todir]$_REQUEST[zipname] 不能写入,请检查路径或权限是否正确.
";
}
}
?>
以上就介绍了photoshop官方网站 PHP网站备份程序代码分享,包括了photoshop官方网站方了内容,希望对PHP教程有兴趣的朋友有所帮助。