2014-03-29 48 views
0

我一直在嘗試上傳UIImage在服務器上,但在上傳之前我已經將它轉換爲BASE64字符串。該方法是POST,並且我正在發送帶有其他參數的圖像。閱讀了幾個與此相關的答案,但沒有得到任何有用的東西。 這裏是我的代碼無法在iOS上將UIImage上傳到服務器

-(void)makeprofileWithData:(NSString *)urlstring andname:(NSString *)name gender:(NSString *)gender withstatus:(NSString *)status latitide:(NSString *)lat withLongitude:(NSString *)longitude andaddress:(NSString *)address andImage:(NSString *)string; 
{ 

    appdel=(AppDelegate *)[UIApplication sharedApplication].delegate; 
    NSURL *url = [NSURL URLWithString:[NSString stringWithFormat:@"%@%@",appdel.bseurl,urlstring]]; 
    receivedData = [[NSMutableData alloc] initWithLength:0]; 
    NSString *tempString=[NSString stringWithFormat:@"mobile=%@&name=%@&gender=%@&status=%@&address=%@&latitude=%@&longitude=%@&profile_pic=%@",[[NSUserDefaults standardUserDefaults]objectForKey:@"mobile"],name,gender,status,address,lat,longitude,string]; 


    NSData *requestData = [tempString dataUsingEncoding:NSUTF8StringEncoding]; 
    NSError *error; 
    NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:60.0]; 
    [request setHTTPMethod:@"POST"]; 
    [request setValue:@"application/json" forHTTPHeaderField:@"Accept"]; 
    [request setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"]; 
    [request setValue:[NSString stringWithFormat:@"%d", [requestData length]] forHTTPHeaderField:@"Content-Length"]; 
    [request setHTTPBody: requestData]; 
    [NSURLConnection connectionWithRequest: request delegate:self]; 
} 

在這個方法中是BASE64字符串,我發送其它參數,如手機,名稱位置,地址,性別也由&分開身體。

回答

1

我建議您不要使用BASE64轉換,而應使用GZiP壓縮。它會給出更好的結果。您可以從這裏下載示例項目 Here

您可以使用Compression和uncompression中的GZIP類。

+0

你能告訴我我在做什麼錯在上面的代碼 – ankyy

+0

我認爲你做得很好根據我,但問題是在你的服務器端他們沒有正確解碼它。告訴他們你使用BASE64轉換。他們相應地解碼。 – Deepak

0

我認爲你的UTF8編碼可能存在問題;你能檢查結果

- (BOOL)canBeConvertedToEncoding:(NSStringEncoding)encoding 

在你的代碼中清除了這種可能性。