2012-07-04 119 views
3

我正在通過POST發送大量文本到我的網頁上,由PHP接收。它大約500kb - 1.5 MB。這個問題是,它是非常重複的數據,我想壓縮它。數據是這樣的,「123,123,123,124,124,124,125,126 ...等」iOS gzip壓縮到PHP

我發現NSData的+壓縮庫由Geoggrey加塞德http://cocoadev.com/wiki/NSDataCategory包含方法gzipInflate和gzipDeflate並已經得到了gzipInflate方法才能正常解壓來自服務器的數據,但不能在我的生活中弄清楚如何在iOS中壓縮字符串並將其發送到服務器以通過PHP進行解壓縮。

這裏是我的iOS代碼:

NSData* uncompressedStringData = [@"test" dataUsingEncoding:NSUTF8StringEncoding]; 
NSData* compressedData = [uncompressedStringData gzipDeflate]; 
ASIFormDataRequest * request = [ASIFormDataRequest requestWithURL:[NSURL URLWithString:@"myserver"]]; 
[request setPostValue:@compressedData forKey:@"1"]; 
...more code to deal with sending the request.. etc... 

這裏是我的PHP代碼:

echo gzinflate($_POST['1']); 

所有我回來從服務器

Warning: gzinflate() data error 

任何幫助,將不勝感激!

回答

3

嘗試gzdecode而不是gzinflate

[編輯]
看起來gzdecode只能從php5.4(這是我的版本有gzdecode)

從我得到了下面的意見,我在php5.3上測試過它,它工作

<?php 
function gzdecode($data) 
{ 
    return gzinflate(substr($data,10,-8)); 
} 
?> 
+0

在當前的php版本中可能還沒有。在評論中的替代實現,或通過upgradephp。 – mario

+0

我不得不在iOS中使用base64編碼對字符串進行編碼,然後發送該字符串,然後在php中base64_decode然後應用您的gzdecode函數,但是謝謝! – user1492744

+0

gzdecode很棒 – malhal