ios - 如何使用其他一些参数在服务器的HTTP正文中发送图像

标签 ios objective-c post

我想将一个图像发送到正文中的服务器。该图像没有任何参数。有了图像,我还有其他一些参数要发送。

我使用下面的代码进行上传。此代码的问题我既没有错误也没有结果。

请找到代码;

-(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];
}

i am getting sucess message when i use in post man

您能帮我解决这个问题,谢谢您的快速响应。谢谢...

最佳答案

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/

相关文章:

ios - IOS 中的 Google Place Search API

ios - CoreData严重应用错误: Entity is not key value coding-compliant

objective-c - iOS的UISlider如何评估它所在的位置?

html - 如何使用 extJS 发布 json 数据

ios - Xamarin iOS : Unable to start new ViewController by tapping on remote notifications

ios - 如何在 Swift 3 中设置状态栏样式

ios - 可以检测我的框架是作为主应用程序还是扩展程序的一部分运行?

php - NSURLMutableRequest 与 POST 方法和 PHP

reactjs - 后验证失败 : Path '...' is required when using react-hooks-form

c - 在c中通过https发布json数据