ASP.Netのお勉強

Zipファイル作成@ASP.Net

画面のテキストボックスに入力された文字を取得し、
ZIPファイルを作成します。

ZIPファイルの作成は、「#ziplib (SharpZipLib, formerly NZipLib)」を利用します。
http://www.icsharpcode.net/OpenSource/SharpZipLib/Default.aspx
から入手することができます。
「ICSharpCode.SharpZipLib.dll」を参照設定します。

画面にテキストボックス(MultiLineモード)とボタンを配置します。
ボタンを押した時に、ZIPファイルを作成します。

ZIPファイルの作成処理を記述します。
ZIPファイル名を指定して、FileStreamを生成します。

FileStreamを元にZipOutputStreamを生成します。
ZIPファイルのパスワード、圧縮レベルを指定します。

ZIPファイル内に追加するファイル名を指定して、ZipEntryを生成します。

画面のテキストボックスの入力された値を取得し、byte配列に変換します。
Crc32を設定し、CRCの値を作成します。
ZipEntryにCRC値をセットします。

ZipOutputStreamのPutNextEntryにてZipEntryを追加し、
ZipOutputStreamのWriteにて、byte配列を書き込みます。

所定の場所に、Zipファイルが作成していることを確認して、
中身を確認します。

●aspx

<%@ Page Language="VB" AutoEventWireup="false" CodeFile="Default.aspx.vb" Inherits="_Default" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>Zipファイル作成</title>
</head>
<body>
    <form id="form1" runat="server">
        <asp:TextBox ID="txt" runat="server" Height="287px" TextMode="MultiLine" Width="469px"></asp:TextBox><br />

        <asp:Button ID="Button1" runat="server" Text="実行" />
    </form>
</body>
</html>


●aspx.vb

Imports ICSharpCode.SharpZipLib.Zip
Imports ICSharpCode.SharpZipLib.Checksums
Imports System.IO

Partial Class _Default
    Inherits System.Web.UI.Page

    'ZIPファイル作成
    Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click

        Dim fileStream As FileStream
        Dim zipOutStream As ICSharpCode.SharpZipLib.Zip.ZipOutputStream
        Dim zipEntry As ICSharpCode.SharpZipLib.Zip.ZipEntry
        Dim crc As ICSharpCode.SharpZipLib.Checksums.Crc32

        Dim zipFileName As String

        Try
            'ZIPファイル名
            zipFileName = "C:\test.zip"

            'FileStream
            fileStream = New FileStream(zipFileName, FileMode.Create, FileAccess.Write)

            'ZipFileを生成
            zipOutStream = New ZipOutputStream(fileStream)

            'パスワード追加
            zipOutStream.Password = "pass"

            '圧縮のレベル
            zipOutStream.SetLevel(5)

            'ZipEntry生成
            zipEntry = New ZipEntry("test.txt")

            '画面のテキスボックスの値
            Dim str As String = Me.txt.Text
            Dim bt() As Byte = System.Text.Encoding.Unicode.GetBytes(str)

            'CRC32生成
            crc = New Crc32()
            crc.Update(bt)

            'CRC設定
            zipEntry.Crc = crc.Value

            'ZipEntryを追加
            zipOutStream.PutNextEntry(zipEntry)

            '書き込み
            zipOutStream.Write(bt, 0, bt.Length)

            'クローズ
            zipOutStream.Close()
            fileStream.Close()
        Catch ex As Exception
            MsgBox(ex.Message)
        End Try
    End Sub
End Class


Copyright (C) ASP.Netのお勉強. All Rights Reserved.