ios - 通过 POST 方法发送带有其他参数的图像

Posted

技术标签:

【中文标题】ios - 通过 POST 方法发送带有其他参数的图像【英文标题】:ios - Send image with other parameters by POST method 【发布时间】:2015-09-24 04:38:17 【问题描述】:

我已经编写了一个代码来按用户在网络中添加项目并且它工作正常..现在我想添加另一个参数,即图像..我无法这样做..我的代码是

NSString *posturslString= [NSString stringWithFormat:@"ToDo_Item=%@&ToDo_Date=%@&AddedBy=%i",self.ToDo_Item, [dateformatter stringFromDate:self.ToDo_Date],self.AddedBy];
NSString *postData = [[NSString alloc] initWithString:posturslString];


[request setValue:@"application/x-www-form-urlencoded; charset=utf-8" forHTTPHeaderField:@"Content-Type"];


[request setHTTPBody:[postData dataUsingEncoding:NSUTF8StringEncoding]];


NSURLResponse *response = [[NSURLResponse alloc] init];

self.receivedData =[NSURLConnection sendSynchronousRequest:request returningResponse:&response error:nil];

NSError * error;
NSDictionary *user = [NSJSONSerialization JSONObjectWithData:self.receivedData
                                                     options:0
                                                       error:&error];

NSNumber *successNumber =  [user objectForKey:@"success"];
success = [successNumber integerValue];

我如何发送图像,即 nsdata

NSData *png=UIImagePNGRepresentation(self.itemImage.image);

连同我的其他参数。请帮忙。

【问题讨论】:

请参考此链接:Post data along with image 【参考方案1】:

base64Encoded

中转换您的图像
NSData *imageData = UIImageJPEGRepresentation(uploadImage, 1.0);
NSString *base64String = [imageData base64EncodedStringWithOptions:kNilOptions];
NSString *encodedString2 = (NSString *)CFBridgingRelease(CFURLCreateStringByAddingPercentEscapes( NULL,  (CFStringRef)base64String,    NULL,   CFSTR("!*'();:@&=+$,/?%#[]\" "),   kCFStringEncodingUTF8));

并添加与其他关键字相同的图像

NSString *posturslString= [NSString stringWithFormat:@"ToDo_Item=%@&ToDo_Date=%@&AddedBy=%i&image=%@",self.ToDo_Item, [dateformatter stringFromDate:self.ToDo_Date],self.AddedBy,encodedString2];

注意:-还需要在服务器端实现图片的转换base64Encoded

【讨论】:

谢谢你..至少我有一个开始..在尝试实施后会回来.. :) 你的答案对我来说很好。我确实在服务器中解码了图像字符串以保存图像。:) @Jogendra.Com 如果我已经创建了base64String,为什么还需要百分比编码??

以上是关于ios - 通过 POST 方法发送带有其他参数的图像的主要内容,如果未能解决你的问题,请参考以下文章

使用 Retrofit 发送带有参数的 Post 请求

iOS 从带有 JSON 参数的 AFNetworking HTTP POST 方法获取 JSON 响应

Django:重构通过 $.post 发送的结构化参数

iOS JSON解析Objective-C并传递POST方法参数

如何发送带有 URL 参数和 JSON 正文的 POST? [关闭]

解决 WKWebView http POST 在 iOS 11.3 中不再发送参数的问题