Javascript GZIP и BTOA и распаковать с помощью C # - PullRequest
0 голосов
/ 15 апреля 2019

Я занимаюсь разработкой приложения, в котором я сжимаю большие данные 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 >> для >> разархивирования байтов >> для >> обычного текста

...