我想将一个图像发送到正文中的服务器。该图像没有任何参数。有了图像,我还有其他一些参数要发送。
我使用下面的代码进行上传。此代码的问题我既没有错误也没有结果。
请找到代码;
-(void)uploadimage1
{
NSData *imageData = UIImageJPEGRepresentation(_imgOutlet.image, 1.0);
NSString *base64Img = [imageData base64EncodedStringWithOptions:NSDataBase64EncodingEndLineWithLineFeed];
// NSDictionary *parameters = @{@"data":base64Img};
NSError *error;
// NSData *jsonData = [NSJSONSerialization dataWithJSONObject:base64Img
// options:nil
// error:&error];
//
// //do some error checking
// http://imhsservices.org/IMHS_NEW/api/Image_Base64?AadharCardNo=369369369369.00&UploadDate=2017-05-25&OriginalName=2.jpg&ReportType=Medical
NSString *urlstr = [NSString stringWithFormat:@"http://imhsservices.org/IMHS_NEW/api/Image_Base64?AadharCardNo=%@&UploadDate=%@&ReportType=%@&OriginalName=%@",@"369369369369.00",@"2017-08-11",@"Medical",@"2.jpg"];
NSLog(@"%@",urlstr);
NSURL *url = [NSURL URLWithString:urlstr];
NSURLSession *session = [NSURLSession sharedSession];
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
[request setHTTPMethod:@"POST"];
[request setHTTPBody:base64Img];
NSURLSessionDataTask *task = [session dataTaskWithRequest:request completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {
NSLog(@"%@",error);
if (!error) {
if ([data length]) {
NSString *jsonResponse = [NSJSONSerialization JSONObjectWithData:data options:0 error:nil];
NSLog(@"%@",jsonResponse);
//GET RESULT;
// NSLog(@"A %@", parameters[@"results"]);
}
} else {
NSLog(@"%@", error);
}
}];
[task resume];
}
您能帮我解决这个问题,谢谢您的快速响应。谢谢...
最佳答案
UIImage *imageobj=[UIImage imageNamed:@"a.jpg"];
NSData *data1=UIImagePNGRepresentation(imageobj);
NSString *encodedString = [data1 base64Encoding];
NSString * strEncondingdata=[NSString stringWithFormat:@"%@%@",@"data:image/png;base64,",encodedString];
NSLog(@"%@",strEncondingdata);
您需要将图像转换为该格式,然后才能发送到服务器。另外还有一件事是检查图像分辨率,如果图像分辨率较高的服务器端没有上传,那么前端就需要压缩图像。
使用下面的代码压缩图像。
NSData *unscaledData = UIImagePNGRepresentation(imageobj);
if (unscaledData.length > 5000.0f ) {
UIImage *image2 = [self imageWithImage:image scaledToSize:CGSizeMake(image.size.width/2, image.size.height/2)];
NSData *finalData = UIImagePNGRepresentation(image2);
if (finalData.length > 5000.0f ) {
image3 = [self imageWithImage:image2 scaledToSize:CGSizeMake(image2.size.width/2, image2.size.height/2)];
}
}
-(UIImage *)imageWithImage:(UIImage*)image scaledToSize:(CGSize)newSize
{
// Create a bitmap context.
UIGraphicsBeginImageContextWithOptions(newSize, YES, [UIScreen mainScreen].scale);
[image drawInRect:CGRectMake(0,0,newSize.width,newSize.height)];
UIImage* newImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return newImage;
}
关于ios - 如何使用其他一些参数在服务器的HTTP正文中发送图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45629152/