【问题标题】:Deflate with Pako and inflate with asp net core用 Pako 放气,用 asp net core 充气
【发布时间】:2020-07-10 14:45:02
【问题描述】:

我正在尝试在前端压缩一个 .xlsx 文件,并在服务器端,在 asp net core 2.2 服务器中对其进行膨胀。

我什么都试过了,现在有了:

//JS code
handleSaveFile = (file) => {
    var compressedFile = pako.deflate(JSON.stringify(file), { to: 'string' });
    this.setState({ file: compressedFile });
  } 

完全直截了当,pako.deflate 足以解决问题。

现在在后端我尝试了所有方法,但根据文档,结果如下:

我也试过 GZipStream,但结果是一样的。我找不到任何关于压缩/解压缩的信息,但有很多关于其他方式的信息。

【问题讨论】:

  • 你提到的文档是什么?最好能分享完整的可以重现问题的视图代码(包括如何从js调用服务端方法)。
  • 不多说了,pako压缩就是一行代码。在服务器上工作得很好,因为我已经让它在没有压缩的情况下工作。我现在正在做的是试图在服务器中放气,直到现在没有成功。
  • 有更新吗?我也陷入了这个问题
  • 有点忽略了这种情况,因为我的用例不需要大于 25 mb 的文件,但最终会出现。但肯定不是一件容易的事

标签: javascript c# asp.net-core zlib pako


【解决方案1】:

请看这个,希望对你有帮助:

客户:

let output = pako.gzip(JSON.stringify(obj));

服务器:

public static string Decompress(byte[] data)
{
    // Read the last 4 bytes to get the length
    byte[] lengthBuffer = new byte[4];
    Array.Copy(data, data.Length - 4, lengthBuffer, 0, 4);
    int uncompressedSize = BitConverter.ToInt32(lengthBuffer, 0);

    var buffer = new byte[uncompressedSize];
    using (var ms = new MemoryStream(data))
    {
        using (var gzip = new GZipStream(ms, CompressionMode.Decompress))
        {
            gzip.Read(buffer, 0, uncompressedSize);
        }
    }
    string json = Encoding.UTF8.GetString(buffer); 
    return json;
}

详情如下: https://stackoverflow.com/a/66825721/1979406

【讨论】:

    猜你喜欢
    • 2018-03-03
    • 2010-12-10
    • 1970-01-01
    • 2021-12-09
    • 1970-01-01
    • 1970-01-01
    • 2021-11-13
    • 2017-01-13
    • 1970-01-01
    相关资源
    最近更新 更多