ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

iOS-带参数的图片上传(适用于不太懂后端的小白~)

2021-10-25 21:35:17  阅读:246  来源: 互联网

标签:Nonnull iOS NSLog 小白 参数 error Imagesession 上传


iOS-带参数的图片上传

一、现有的两种上传方式

    1. AFNetwork上传

    2.NSURLMutableRequest上传

   (ps:这两种方式,很多博客上已经有了就不需要我在这里再次说明了)

二、我在上传图片时遇到的问题

     上面提到的两种方式我都用过了,但是后台一直返回400的信息,也没有接收到我发的消息,可以说十分苦恼。我先说明一下后台是如何接收的(后端使用的是Springboot)

 

  对于这个带参数的图片上传工作来说,正常情况下使用AFNetwork的 

 [Imagesession POST:@"自己的url" parameters:需要上传的参数 headers:nil constructingBodyWithBlock:^(id<AFMultipartFormData>  _Nonnull formData)

【AFHTTPSessionManager *Imagesession】来实现的,但是我却因为这样的实现方式导致后台并不能识别我的请求消息,导致我上传一直失败

三、问题的根源

     我前端使用OC,后端使用java,这样难免会导致在一些属性定义上存在差异,而且由于我初期接触ios并没有对用户类进行有一个单独的定义,所以在之前我的上传数据过程中一直是需要借助页面中传参,使用时直接定义的方式来进行传输的,加上我对后端及java没有什么了解,导致我并不知道这个参数需要按照文件的方式进行传输(其实这块我也不太理解),就导致出现了上面的问题。

四:问题解决

   formdata追加参数。具体我上一下代码:

带参数图片上传完整代码实现:       

       AFHTTPSessionManager *Imagesession = [[AFHTTPSessionManager alloc]init];

        Imagesession = [[AFHTTPSessionManager alloc] initWithBaseURL:[NSURL URLWithString:@"自己的url(写到端口)"]];

        Imagesession.responseSerializer = [AFJSONResponseSerializer serializer];

        Imagesession.responseSerializer.acceptableContentTypes = [NSSet setWithObjects:@"application/json", @"text/plain", @"text/javascript", @"text/json", @"text/html", nil];

        NSDictionary *params =@{XXXX自己定义};

        [Imagesession POST:@"url的剩余部分" parameters:params headers:nil constructingBodyWithBlock:^(id<AFMultipartFormData>  _Nonnull formData) { 

            [formData appendPartWithFileData:[params yy_modelToJSONData] name:@"需要和后端协调的名字" fileName:@"需要和后端协调的名字" mimeType:@"application/json;charset=utf-8"];

            UIImage *image = [UIImage imageNamed:@"imgtest"];//自己的图片

            NSData *imagedata = UIImageJPEGRepresentation(image, 0.5);

            [formData appendPartWithFileData:imagedata name:@"file" fileName:@"图片名字.jpg" mimeType:@"image/jpg"];

            } progress:^(NSProgress * _Nonnull uploadProgress) {

                //        NSLog(@"%fA",uploadProgress.fractionCompleted);

            } success:^(NSURLSessionDataTask * _Nonnull task, id  _Nullable responseObject) {

                NSLog(@"上传成功");

            } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {

                NSLog(@"上传失败");

                NSLog(@"%@C",error);

                NSLog(@"error ==%@", [error userInfo][@"com.alamofire.serialization.response.error.string"]);

            }];

        

标签:Nonnull,iOS,NSLog,小白,参数,error,Imagesession,上传
来源: https://www.cnblogs.com/suanningmeng/p/15463264.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有