我一直在尝试在服务器上上传UIImage,但在上传之前我已将其转换为BASE64字符串。该方法是POST,我在body中发送带有其他参数的图像。已阅读与此相关的几个答案但是没有任何有用的东西。 这是我的代码
-(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字符串,我发送其他参数,如移动设备,名称位置,地址,性别也在由&分隔的正文中。
答案 0 :(得分:1)
我建议您使用GZiP压缩而不是BASE64转换。它会带来更好的结果。您可以从这里下载示例项目 Here
您可以使用Compression和uncompression中的GZIP类。
答案 1 :(得分:0)
我认为您的UTF8编码可能存在问题;你能检查一下
的结果吗?- (BOOL)canBeConvertedToEncoding:(NSStringEncoding)encoding
在你的代码中清除那种可能性。