javascriptで圧縮を行うコードは、pako(https://github.com/nodeca/pako)Pakoを使用しています。これは、文字列「T」でpako(zlibはjavascript)で圧縮され、zlib(python)は動作しません。
var compressedString = pako.gzip('t', {level: 4, to: 'string'}));
$.ajax('/decompress', {string: compressedString})
コード/エラー、次のスロー解凍を行う解凍
from cgi import parse_qs, escape
import json
import zlib
def application(environ, start_response):
status = '200 OK'
try:
request_body_size = int(environ.get('CONTENT_LENGTH', 0))
except (ValueError):
request_body_size = 0
request_body = environ['wsgi.input'].read(request_body_size)
d = parse_qs(request_body)
response_headers = [('Content-type', 'text/plain')]
start_response(status, response_headers)
inputString = d.get('string')[0]
# Use same wbits(=31) as used by pako
decompressed = zlib.decompress(inputString, 31);
return 'done'
にし解凍を圧縮します。このエラーは、zlib.decompress行で発生します。
error: Error -3 while decompressing data: incorrect header check
Iはまた、(
inputString.encode('utf-8')
)inputStringからをコードする試みたが、それはまた、エラーをスローします。
iso-8859-1のエンコーディングについてはわかりませんでした。私は文字通りこの問題を解決するために何日も過ごしました。ありがとうたくさん:) – hariom
utf-8エンコーディング(目的をある程度圧縮する目的)に起因して、3バイトを送信することについて述べた問題を調べます。問題は現在、ハイブリッドデータを送信する必要があることです。一部の値はバイナリではなく、一部はバイナリデータです。したがって、マルチパートフォームデータヘッダーを直接設定することはできません。 – hariom
最初のステップでは、base64を試してみることができます。これは、rawよりわずか33%です。ほとんどのブラウザでbase64を['atob()'](https://developer.mozilla.org/en-US/docs/Web/API/WindowBase64/atob)として取得しますが、もう一度やり直してください! IE <10。 (少なくとも1つはpolyfillに簡単です。) – bobince