レンダリング:
PHPコード
コードをコピー コードは次のとおりです:
error_reporting(E_ALL & ~E_NOTICE);
ini_set('memory_limit', '2048M');
echo "圧縮するファイルまたはディレクトリを選択してください:
";
$fdir = opendir('./'); fdir))
{
if($file=='.'|| $file=='..')
echo "
";
if(is_file($file))
{
echo "
2 $file
";
}
else
{
echo "
0
(ファイルの種類は「|」で区切られており、任意のファイルを含めるためのデフォルト値は空です。たとえば、php ファイルと jpg ファイルをパッケージ化する必要がある場合は、「php|」と入力します。 jpg")
font>
圧縮ファイルをディレクトリに保存します:
(このディレクトリは空白のままにします。書き込み権限が必要です)
}
// 変更を返します。ファイルの時刻形式。
//このクラスの内部関数呼び出しのみ。
{
$timearray = ($unixtime == 0) : getdate($unixtime) ;
if ($timearray['年'] < 1980)
$timearray['月'] = 1;
$timearray['時間'] = 0;
$timearray['分'] = 0;
}
return (($timearray['年']) < ;< 25) | ($timearray['月'] <21) ($timearray['時間'] <11) | ($timearray[' minutes'] << ; 5) ($timearray['seconds'] >> 1);
//ファイルを初期化し、ファイル ディレクトリを作成します。ファイルの書き込み許可$path = dirname($path);
} while($ path != '.');
do
{
$path = @current($mypathdir);パス);
} while(@prev($mypathdir)) ;
if($this->fp=@fopen($this->gzfilename,"w"))
{
return true; false;
}
//zip パッケージにファイルを追加します。
function addfile($data, $name)
{
$name = str_replace('\', '/', $name); ($name,'/')=='/')
return $this->adddir($name);
if(!empty($this->filefilters))
{
if (!in_array(end) (explode(".",$name)), $this ->filefilters))
{
return;
$dtime = dechex($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);
unset($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;
}
関数 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);
unset($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 = "x50x4bx05x06x00x00x00x00" 。
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";
else
$_REQUEST[zipname] = トリム($_REQUEST[zipname]);
if(!strrchr(strto lower($_REQUEST[zipname]),'.')=='.zip')
$_REQUEST[zipname] .= ".zip";
$_REQUEST[todir] = str_replace('\','/',trim($_REQUEST[todir]));
if(!strrchr(strto lower($_REQUEST[todir]),'/')=='/')
$_REQUEST[todir] .= "/";
if($_REQUEST[todir]=="/")
$_REQUEST[todir] = "./";
関数リストファイル($dir=".")
{
グローバル $dodozip;
$sub_file_num = 0;
if(is_file("$dir"))
{
if(realpath($dodozip ->gzfilename)!=realpath("$dir"))
{
$dodozip ->gt; 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]";
}
}
return $num_bitunit_str;
}
if(is_array($_REQUEST[dfile]))
{
$dodozip = 新しい 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 官方 web サイト PHP サイトのコードの共有を介して、photoshop 官方 web サイトに関する内容が含まれており、PHP 教則に関心のある友人の助けになることを望みます。