0

.cs ファイルで gzip を使用してデータを圧縮し、html ページで取得するプロジェクトがあります。これがgzipの私のコードです。

public byte[] CustomerList()
    {
        SqlDataAdapter da = new SqlDataAdapter("select CustomerID from CustomerMaster", con);

        DataSet ds = new DataSet();
        da.Fill(ds);
        return CompressData(ds);
    }
    public byte[] CompressData(DataSet ds)
    {
        using (MemoryStream memory = new MemoryStream())
        {
            using (GZipStream gzip = new GZipStream(memory, CompressionMode.Compress))
            {
                var formatter = new BinaryFormatter();
                formatter.Serialize(gzip, ds);
                gzip.Close();
            }

            return memory.ToArray();
        }
    }

ajax関数を使用してhtmlページからデータを正常に受信しました。これが私のコードです

<script type="text/javascript" language="javascript">
    $(document).ready(function () {

                    $.ajax({
                        type: "POST",
                        url: "Service1.svc/CustomerList",
                        contentType: "application/json; charset=utf-8",
                        dataType: "json",
                        processdata: true,
                        success: function (data) {
                            alert(data.CustomerListResult);
                        },
                        error: function () {
                            alert("Error");
                        }
                    });
                });



</script>

バイト形式でデータを受け取りました。ここで、バイトデータを復号化して元のデータを取得したいと考えています。ここで行き詰まりました。バイトを復号化して元のデータを取得する方法を教えてください。

4

1 に答える 1

0

最善の解決策は、データを圧縮せず、代わりにWebサーバーで圧縮を有効にすることです。データを事前に圧縮する必要がある場合は、もう一方の端でデータを解凍する必要があります(これは世界で最も速いことではありません)。C#はわかりませんが、標準のgzipを使用しているようです。したがって、独自のgzipライブラリを作成するか、以前に作成されたライブラリを見つける必要があります。簡単なGoogleがこれを見つけまし:これはnode.js用ですが、おそらくブラウザーで使用するために移植することができます。

tl; dr自分で行うのではなく、Webサーバーにデータを圧縮させます。

于 2013-01-25T09:42:23.083 に答える