【发布时间】:2015-10-12 06:20:04
【问题描述】:
我想要做的是在 post 方法中将图像和文本发送到我的数据库
- (void)uploadpic
{
NSData *imageData = UIImageJPEGRepresentation(self.imageview.image, 90);
// NSString *action=@"tempinsert";
NSString *s=@"54.316130";
NSString *s2=@"9.950930";
NSString *facebook=@"12345";
NSString *cate=@"1";
NSString *action=@"insert";
NSString *note=@"Iiiiiii";
NSString *str=[NSString stringWithFormat:@"my url.php"];
NSString *urlString = [NSString stringWithFormat:@"%@",str];
NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init];
[request setURL:[NSURL URLWithString:urlString]];
[request setHTTPMethod:@"POST"];
NSMutableData *body = [NSMutableData data];
NSString *boundary = @"---------------------------14737809831466499882746641449";
NSString *contentType = [NSString stringWithFormat:@"multipart/form-data; boundary=%@",boundary];
[request addValue:contentType forHTTPHeaderField: @"Content-Type"];
[body appendData:[[NSString stringWithFormat:@"--%@\r\n", boundary] dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[@"Content-Disposition: form-data; name=\"uploaded_file\"; filename=\"popup1.jpg\"\r\n" dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[@"Content-Type: application/octet-stream\r\n\r\n" dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[NSData dataWithData:imageData]];
[body appendData:[@"\r\n" dataUsingEncoding:NSUTF8StringEncoding]];
// parameter username
// "lat=%@&long=%@&sdkuserid=%@&cat=%@&action=%@"]; My parameters
[body appendData:[[NSString stringWithFormat:@"--%@\r\n", boundary] dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[[NSString stringWithFormat:@"Content-Disposition: form-data; name=\"sdkuserid\"\r\n\r\n"] dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[facebook dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[@"\r\n" dataUsingEncoding:NSUTF8StringEncoding]];
// parameter token
[body appendData:[[NSString stringWithFormat:@"--%@\r\n", boundary] dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[[NSString stringWithFormat:@"Content-Disposition: form-data; name=\"insert\"\r\n\r\n"] dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[action dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[@"\r\n" dataUsingEncoding:NSUTF8StringEncoding]];
// parameter method
[body appendData:[[NSString stringWithFormat:@"--%@\r\n", boundary] dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[[NSString stringWithFormat:@"Content-Disposition: form-data; name=\"cat\"\r\n\r\n"] dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[cate dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[@"\r\n" dataUsingEncoding:NSUTF8StringEncoding]];
//parameter method
[body appendData:[[NSString stringWithFormat:@"--%@\r\n", boundary] dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[[NSString stringWithFormat:@"Content-Disposition: form-data; name=\"long\"\r\n\r\n"] dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[s2 dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[@"\r\n" dataUsingEncoding:NSUTF8StringEncoding]];
// close form
[body appendData:[[NSString stringWithFormat:@"--%@--\r\n", boundary] dataUsingEncoding:NSUTF8StringEncoding]];
// setting the body of the post to the reqeust
[request setHTTPBody:body];
NSData *returnData = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil];
// NSString *returnString = [[NSString alloc] initWithData:returnData encoding:NSUTF8StringEncoding];
NSDictionary *dict=[NSJSONSerialization JSONObjectWithData:returnData options:NSJSONReadingMutableLeaves error:nil];
//
NSLog(@" ------- >%@",returnData);
NSLog(@" ------- >%@",dict);
}
输出
take photo[1295:31484] ------- ><0d0a0d0a 0d0a0d0a>
take photo[1295:31484] ------- >(null)
我的输出始终为空。我正在尝试将图像和少量文本发送到服务器。尽管我没有任何此类验证 firld 不能为空,所以我尝试使用更少的数据。但我每次都得到空值。
【问题讨论】:
-
检查您的服务器日志并将错误处理添加到您的代码中
-
尝试上传图片内容类型[@"Content-Type: image/png\r\n\r\n" dataUsingEncoding:NSUTF8StringEncoding]
-
您是否希望从上传 API 返回任何数据?我认为状态码 200 足以确认上传。获取 NSURLResponse 并检查服务器响应的状态。
-
@sandeep nag 我的建议是请将图片转换成
base64字符串然后发送到服务器,服务器逻辑可以将字符串转换为图片,反之亦然。 -
试试这个链接来获取文件并使用它。我已经使用这个文件上传了图片gist.github.com/igaiga/1354221
标签: ios objective-c json uiimageview http-post