我必须在JavaScript中向客户端充气一些数据(实际上是csv文件块),并在C#中将其放在服务器端。
在客户端,我正在使用pako,它看起来像这样:
var fileReader = new FileReader();
fileReader.onload = function(progressEvent) {
var arrayBuffer = this.result;
var binData = new Uint8Array(arrayBuffer);
var data = pako.deflate(binData);
var dataBlob = new Blob(data, { "type": "application/zlib" });
callback(dataBlob);
};
fileReader.readAsArrayBuffer(bytes);
似乎运作良好。我说“似乎”因为如果我保存在服务器端收到的数据,我会得到一个如下所示的字符串:
1201562201899117927731141602491...
I found out ZLib压缩数据应该以0x78和0x9C开头,120为十进制为0x78,156为十进制为0x9C,因此客户端膨胀似乎没问题。
问题在服务器端我无法设法收缩数据。这就是我的代码:
// Read past the first two bytes of the zlib header
inputStream.Seek(2, SeekOrigin.Begin);
using (var zipStream = new DeflateStream(inputStream, CompressionMode.Decompress))
using (FileStream fileStream = File.Create(filePath))
{
zipStream.CopyTo(fileStream);
}
我从DeflateStream构造函数中得到一个错误,说数据不太正确。
现在这是我到目前为止收集的内容:
您认为我应该如何正确地缩小数据服务器端?
答案 0 :(得分:0)
将数据传递给数组中的blob构造函数
var dataBlob = new Blob([data], { "type": "application/zlib" });
来自MDN
var aBlob = new Blob(array,options);
<强>参数强>