2014-03-27 22 views
0

我正在將數據從iOS應用程序發佈到PHP頁面。它正在接收這些數據,但它似乎並沒有收到所有的後期數據,只有大約一半的數據。我發送的數據是一個序列化的圖像,因此它非常大。PHP頁面無法從iOS應用程序接收所有POST數據

我使用下面的代碼後從應用程序中的數據:

NSError *error; 
NSData *data =[NSJSONSerialization dataWithJSONObject:dict options:0 error:&error]; 
NSURL *url = [NSURL URLWithString:link]; 

NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init]; 
[request setURL:url]; 
[request setHTTPMethod:@"POST"]; 
[request setValue:@"application/json" forHTTPHeaderField:@"Accept"]; 
[request setValue:@"application/json" forHTTPHeaderField:@"Content-Type"]; 
[request setValue:[NSString stringWithFormat:@"%d", (int)data.length] forHTTPHeaderField:@"Content-Length"]; 
[request setHTTPBody:data]; 

NSURLResponse *response = nil; 
error = nil; 

NSData *result = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error]; 

然後我用下面的PHP代碼得到這一職位數據。

$handle = fopen('php://input','r'); 
$jsonInput = fgets($handle); 

$decoded = json_decode($jsonInput,true); 

這似乎很好地工作,並在我的項目的其他方面的工作,但沒有其他地區發佈這樣的大數據。

我也試過創建一個HTML表單,並通過這個表單發佈這個數據,看看是否有某種大小限制的發佈數據。但是,當我通過html表單發佈數據時,它工作正常,發佈了所有數據。

這個問題可以與fopen/fgets命令和他們可以檢索的數據的某種大小限制有關嗎?

在此先感謝。

+0

我假設你已經base64編碼的圖像字節?我建議完全使用JSON方法併發送帶有適當MIME類型(適用於您的圖像類型)的HTTP請求(例如「image/png」)和原始圖像字節 - 或者,如果您要發送其他參數,請發送「multipart/form-data」請求。 – bgfriend0

+0

這兩種方法中的哪一種傳輸的數據都較少?如果不是,你能建議我如何實現你所描述的? – myles

回答

0

原來,它發佈了所有的數據,只是我的數據庫中的數據類型'blob'不夠大,無法保存該值。

將其更改爲'longblob',現在它工作正常。

相關問題