Я занимаюсь разработкой приложения, в котором я сжимаю большие данные JSON, используя pako.gzip, а затем использую функцию btoa, чтобы сделать ее base64string для отправки данных на сервер.В javascript, который я написал:
var data = JSON.stringify(JSONData);
var ZippedData = pako.gzip(data, { to: 'string' });
var base64String = btoa(ZippedData);
/* post to server*/
$http.post("URL?base64StringParam=" + base64String").then(function (response) {
//do stuff
});
проблема заключается в том, что мне нужно снова распаковать данные в коде C # после публикации, чтобы выполнить другие действия над ним.В коде C # я написал:
byte[] data = Convert.FromBase64String(base64StringParam);
string decodedString = System.Text.ASCIIEncoding.ASCII.GetString(data);
Encoding enc = Encoding.Unicode;
MemoryStream stream = new MemoryStream(enc.GetBytes(decodedString));
GZipStream decompress = new GZipStream(stream, CompressionMode.Decompress);
string plainDef = "";
и здесь я получаю ошибку
using (var sr = new StreamReader(decompress))
{
plainDef = sr.ReadToEnd();
}
Обнаружил недопустимые данные при декодировании.
любая помощь для распаковки данных обратнов C # будет оценено
РЕДАКТИРОВАТЬ : чтобы подвести итог, что необходимо сделать, javascript делает следующее:
Простой текст >> to >> gzip bytes >> to>> строка base64
мне нужно, чтобы C # сделал обратное:
Base64 >> для >> разархивирования байтов >> для >> обычного текста