2013-01-25 29 views
0

我有一个项目,我使用.cs文件中的gzip压缩数据并在html页面中获取它。 这是我的gzip代码。在javascript/jquery解密字节数据

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> 

我收到了字节格式的数据。现在我想解密字节数据以获取原始数据。我在这里被卡住了。请帮助我如何解密字节以获取原始数据。

回答

0

最好的解决方案是不压缩数据,而是在Web服务器上启用压缩。如果你必须预先压缩数据,那么你需要在另一端解压它(这不会是世界上最快的)。我不知道C#,但它看起来像你使用标准的gzip;所以你必须写自己的gzip库或找到之前已经制作好的库。快速谷歌发现this:这是为node.js,但你可以将它移植到浏览器中使用。

tl; dr让您的Web服务器压缩数据,而不是自己动手。

+1

如果你真的去了“让我们使用JavaScript来解压缩这个疯狂的路线”,请记住,浏览器JS对原始字节序列/流的处理并不是特别好。如果您更改C#以便输出文本编码数据(例如,BASE64等),那么您可能会获得更多成功,然后您的JS必须解码然后解压缩......祝您好运! – Xophmeister