使用pako在JavaScript中執行壓縮的代碼(https://github.com/nodeca/pako)Pako。它壓縮字符串「T」用pako壓縮(javascript中的zlib),用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
我還試圖編碼inputString(
inputString.encode('utf-8')
),但它也引發錯誤。
我不知道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。 (至少那個很容易填充。) – bobince