[英]How can I compress JSON and uncompress on PHP?
順便說一句,這不是重復的,我不是試圖在PHP中壓縮,而是試圖壓縮客戶端並在PHP中解壓縮。
我正在嘗試將包含5個base64圖像和一些文本的JSON數組壓縮到我的PHP api。
我嘗試了lz-string和pako,它似乎正在按預期方式發送壓縮的有效負載,但是我在PHP后端上解壓縮時遇到了問題。
打字稿Gzip。
var payload = pako.gzip(JSON.stringify(data), { to: 'string' });
let headers = new Headers({ "Content-Encoding" : "gzip"});
headers.append('Content-Type', 'application/json; charset=x-user-defined-binary');
let requestOptions = new RequestOptions({ headers: headers });
var url = this.baseUrl + "/app/notice/issue/compressed";
return this.http.post(url, data, requestOptions).pipe(timeout(100000), map(res => { return res.json() }), catchError(err => { return throwError(err.message); }));
的PHP
$input = file_get_contents("php://input");
$test = gzdecode($input);
echo $test;
輸出量
"
<div style="border:1px solid #990000;padding-left:20px;margin:0 0 10px 0;">
<h4>A PHP Error was encountered</h4>
<p>Severity: Warning</p>
<p>Message: gzdecode(): data error</p>
</div>"
如果有人可以幫助減少JSON的大小,那將真的很有幫助。
謝謝。
您的PHP示例看起來不錯,並且應該可以工作。
我不確定Typescript部分:在通過瀏覽器或http.post()
方法發送之前,可以對二進制字符串進行額外編碼(可能是UTF-8嗎?)。
檢查壓縮后發送的請求的Content-Length
和二進制字符串的實際長度。 它們顯然必須相同。
我建議刪除pako.gzip()
方法中的{to: 'string'}
選項以獲取Uint8Array
而不是string並使用XMLHttpRequest
代替http.post()
也可以看看:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.