ファイルまたはフォルダから ZIP を作成
最大 1,000 ファイルまたはフォルダー全体(合計 250 MB)を追加し、圧縮する前にパスとサイズを確認できます。アーカイブ名、DEFLATE レベル(Store〜Maximum)、フォルダーパスを保持するかを選び、平坦化で名前が衝突した場合は後のファイルを改名して残します。ファイル・名前・レベル・フォルダー設定のいずれかを変えると前の ZIP は破棄されるため、表示とダウンロードが食い違いません。
ブラウザ内でローカルに実行最大 1,000 ファイルまたはフォルダー全体(合計 250 MB)を追加し、圧縮する前にパスとサイズを確認できます。アーカイブ名、DEFLATE レベル(Store〜Maximum)、フォルダーパスを保持するかを選び、平坦化で名前が衝突した場合は後のファイルを改名して残します。ファイル・名前・レベル・フォルダー設定のいずれかを変えると前の ZIP は破棄されるため、表示とダウンロードが食い違いません。
ブラウザ内でローカルに実行ファイルを選択するか、フォルダーを丸ごと選んで走査させると、圧縮する前に一覧へ各エントリのパスとサイズが並び、ソースファイル数と合計サイズも表示されます。選択は積み上がり、2 回目に選んだ分は前の選択を置き換えずに追加され、同じファイルを二度選んでも 1 件として数えられ、一覧はパス順に並ぶため同じ入力からは同じ ZIP ができます。
できあがるものは実際に 1 件ずつ測りました。サンプル 4 ファイル(12 B〜4 KB、合計 5.65 KB)は既定レベルで 4.44 KB の ZIP になり、3 階層のサブフォルダーと dup.txt という同名 2 ファイルを含むフォルダーは、パスを保持するとフォルダー行を含む 10 エントリ、平坦化すると 5 エントリになり、2 つ目の dup.txt は「dup (2).txt」に変わりました。1 バイトのファイル 1,000 個は 97 KB の ZIP になりました。テストしたすべての ZIP は Python の zipfile で開き直せて CRC-32 も一致し、中文 文件.txt は UTF-8 フラグ付きで往復しました。
レベルは DEFLATE に渡されます。0 はファイルをそのまま書き出すため、ZIP はヘッダー分だけ大きくなります(1,680 バイトのファイルは 1.75 KB の ZIP 内でも 1,680 バイトのまま)。3・6・9 は処理時間とサイズを交換し、同じ 1.64 KB の Markdown はレベル 9 で 152 バイトになりました。レベルがファイルの中身を変えることはなく、作成にかかる時間とダウンロードの大きさだけが変わります。
「フォルダーパスを保持」は ZIP 内部の構造を決めます。有効なら各エントリが相対パス(tree/nested/deep/gamma.bin)を保ち、選択したファイルが入っているディレクトリーもフォルダーエントリとして書き出されます。無効なら全ファイルがファイル名だけの状態で ZIP のルートに並びます。ZIP は同じパスに 2 つのエントリを置けないため、平坦化で同名ファイルが衝突したときは後のものを「名前 (2).拡張子」として保存し、先のものを上書きしません。テストでは tree/a/dup.txt と tree/b/dup.txt が dup.txt と dup (2).txt になりました。
どちらの選択方法でも同じ上限を検査します。1 アーカイブあたり 1,000 ファイル、合計 250 MB(262,144,000 バイト)までです。1,001 ファイルのフォルダーと 262,144,001 バイトの 1 ファイルは上限メッセージで拒否され、ちょうど 1,000 ファイルは正常に作成でき、262,144,000 バイトちょうどのファイルは検査を通りました。
空のフォルダーは ZIP に入りません。ブラウザーのフォルダー選択はファイルのみを返すため、選択したファイルを 1 つ以上含むフォルダーだけがエントリとして現れます。パスワード保護は用意していません(ダウンロードは通常の ZIP です)。巨大な選択はタブの空きメモリーにも左右されます。ZIP はページ内で組み立てられるためです。
ファイルは File API で読み、JavaScript で圧縮し、Blob のダウンロードとして保存します。アップロードは行わないため、読み込み後はオフラインでも動作し、サーバーへ送れない資料にも使えます。
ダウンロードされるのは一般的な ZIP で、他のソフトでも普通に開けます。アーカイブ名は多言語の文字を受け付け、конспект 2024.zip は入力どおりに出力されました。パス区切りやファイルシステムが拒む文字はハイフンに置き換えて前後の分を削るため、「..」のような使えない名前は voritools-archive.zip に戻ります。