PHPでフォルダー内のすべてのファイルをzipファイルに圧縮するにはどうすればよいですか?
PHP でフォルダー内のすべてのファイルを zip ファイルに圧縮するにはどうすればよいですか?
たとえば、localhost の下にテスト フォルダーがあり、その中に多くのファイルとフォルダーがあります。テスト内のすべてを test.zip にパッケージ化するにはどうすればよいですか?
---- --解決策--------------------
関数 ReadFileHeader($zip){ $binary_data = fread($zip, 30); $data = unpack('vchk/vid/vversion/vflag/vcompression/vmtime/vmdate/Vcrc/Vcompressed_size/Vsize/vfilename_len/vextra_len', $binary_data); $header['filename'] = fread($zip, $data['filename_len']); IF($data['extra_len'] != 0){$header['extra'] = fread($zip, $data['extra_len']);}Else{$header['extra'] = ''; } $header['圧縮'] = $data['圧縮']; $header['サイズ'] = $data['サイズ']; $header['compressed_size'] = $data['compressed_size']; $header['crc'] = $data['crc']; $header['フラグ'] = $data['フラグ']; $header['mdate'] = $data['mdate']; $header['mtime'] = $data['mtime']; IF($header['mdate'] && $header['mtime']){ $hour = ($header['mtime']&0xF800) >> 11; $分 = ($header['mtime']&0x07E0) >> 5; $seconde = ($header['mtime']&0x001F) * 2; $year = (($header['mdate']&0xFE00) >> 9) + 1980; $month = ($header['mdate']&0x01E0) >> 5; $day = $header['mdate']&0x001F; $header['mtime'] = mktime($hour, $分, $秒, $月, $日, $年); }それ以外{ $header['mtime'] = 時間(); } $header['stored_filename'] = $header['filename']; $header['ステータス'] = "ok"; $header を返します。 } 関数 ReadCentralFileHeaders($zip){ $binary_data = fread($zip, 46); $header = unpack('vchkid/vid/vversion/vversion_extracted/vflag/vcompression/vmtime/vmdate/Vcrc/Vcompressed_size/Vsize/vfilename_len/vextra_len/vcomment_len/vdisk/vinternal/Vexternal/Voffset', $binary_data); IF($header['filename_len'] != 0) $header['filename'] = fread($zip, $header['filename_len']); それ以外の場合、 $header['filename'] = ''; IF($header['extra_len'] != 0) $header['extra'] = fread($zip, $header['extra_len']); それ以外の場合、 $header['extra'] = ''; IF($header['comment_len'] != 0) $header['comment'] = fread($zip, $header['comment_len']); それ以外の場合、 $header['comment'] = ''; IF($header['mdate'] && $header['mtime']){ $hour = ($header['mtime'] &0xF800) >> 11; $分 = ($header['mtime'] &0x07E0) >> 5; $seconde = ($header['mtime'] &0x001F) * 2; $year = (($header['mdate'] &0xFE00) >> 9) + 1980; $month = ($header['mdate'] &0x01E0) >> 5; $day = $header['mdate'] &0x001F; $header['mtime'] = mktime($hour, $分, $秒, $月, $日, $年); }それ以外{ $header['mtime'] = 時間(); } $header['stored_filename'] = $header['filename']; $header['ステータス'] = 'ok'; IF(substr($header['ファイル名'], -1) == '/') $header['external'] = 0x41FF0010; $header を返します。 } 関数 ReadCentralDir($zip, $zip_name){ $size = ファイルサイズ($zip_name); IF($size