我使用以下代码上传了一张图片。图像在Web服务器中保存了3次。我很难在我的代码中进行更改。
NSString *url=[NSString stringWithFormat:@"http://192.168.2.4:98/UserImage.svc/InsertFacialImage?%@",requestString];
NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init] ;
[request setURL:[NSURL URLWithString:url]];
[request setHTTPMethod:@"POST"];
//使用数据和其他图像附件创建'POST'MutableRequest。
NSString *boundary = @"---------------------------14737809831466499882746641449";
NSString *contentType = [NSString stringWithFormat:@"multipart/form-data; boundary=%@", boundary];
[request setValue:contentType forHTTPHeaderField:@"Content-Type"];
NSData *data = UIImageJPEGRepresentation(chosenImage, 0.2f);
[request addValue:@"image/png" forHTTPHeaderField:@"Content-Type"];
NSMutableData *body = [NSMutableData data];
[body appendData:[NSData dataWithData:data]];
[request setHTTPBody:body];
NSData *returnData = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil];
NSString *returnString = [[NSString alloc] initWithData:returnData encoding:NSUTF8StringEncoding];
NSLog(@"Ret: %@",returnString);
NSURLConnection *connReq = [NSURLConnection connectionWithRequest:request delegate:self];
if (connReq)
{
NSLog(@"Connection Sucessful");
// receivedData = [[NSMutableData alloc]init];
}
else {
NSLog(@"failed");
}
[connReq start];
答案 0 :(得分:2)
您正在执行此请求三次......
首先用
NSData *returnData = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil];
然后用
NSURLConnection *connReq = [NSURLConnection connectionWithRequest:request delegate:self];
最后用
[connReq start];
答案 1 :(得分:2)
为缩小1张图片的最终代码
NSString *requestString =[NSString stringWithFormat:@"UserId=%@&CategoryId=%@&Continent=%@&Country=%@&City=%@&Gender=%@&ImageName=%@&AgeRange=%@",UserId,CategoryId,continentTextfield.text,countrytextfield.text,citytextfield.text,gender,imagename,ageTextfield.text];
NSString *url=[NSString stringWithFormat:@"http://192.168.2.4:98/UserImage.svc/InsertFacialImage?%@",requestString];
NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init] ;
[request setURL:[NSURL URLWithString:url]];
[request setHTTPMethod:@"POST"];
// Create 'POST' MutableRequest with Data and Other Image Attachment.
NSString *boundary = @"---------------------------14737809831466499882746641449";
NSString *contentType = [NSString stringWithFormat:@"multipart/form-data; boundary=%@", boundary];
[request setValue:contentType forHTTPHeaderField:@"Content-Type"];
NSData *data = UIImageJPEGRepresentation(chosenImage, 0.2f);
[request addValue:@"image/JPEG" forHTTPHeaderField:@"Content-Type"];
NSMutableData *body = [NSMutableData data];
[body appendData:[NSData dataWithData:data]];
[request setHTTPBody:body];
NSData *returnData;
NSString *returnString = [[NSString alloc] initWithData:returnData encoding:NSUTF8StringEncoding];
NSLog(@"Ret: %@",returnString);
答案 2 :(得分:1)
替换你的
NSData *returnData = [NSURLConnection sendSynchronousRequest:request
returningResponse:nil
error:nil];
NSData *returnData;
它会从3减少到2。
答案 3 :(得分:0)
我明白为什么你要将这些数据中的2个发送2次。电话
NSData *returnData = [NSURLConnection sendSynchronousRequest:request
returningResponse:nil
error:nil];
是触发请求的NSURL类调用。这是一个类调用,因此您不必创建NSURLConnection实例来使用它。
我建议不要使用它,因为它是同步的,并会阻止你的应用程序的UI,直到请求完成。
稍后,您使用相同的URL请求创建NSURLConnection实例并启动连接。这触发了另一个请求,这个异步。
您应该删除sendSynchronousRequest:
来电。
我不知道你为什么要上传文件的第3份副本。
编辑:顺便提一下,您正在为图像创建JPEG数据,但是发送内容类型的图像/ png。这种不匹配可能会导致服务器端出现问题,或者如果其他客户端尝试下载并使用您正在上传的图像。