`
re_reference
  • 浏览: 235762 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

AFNetworking multipart upload

阅读更多
+ (NSDictionary*)parametersOfUser:(User*)user{
    if (user) {
        NSMutableDictionary *returnDict = [NSMutableDictionary dictionaryWithCapacity:0];
        if (user.userId && [user.userId length]) {
            [returnDict setObject:[user.userId urlEncoded] forKey:@"userId"];
        }
        
        if (user.userName && [user.userName length]) {
            [returnDict setObject:[user.userName urlEncoded] forKey:@"userName"];
        }
        if (user.phone && [user.phone length]) {
            [returnDict setObject:[user.phone urlEncoded] forKey:@"phone"];
        }
        if (user.email && [user.email length]) {
            [returnDict setObject:[user.email urlEncoded] forKey:@"email"];
        }
        
        [returnDict setObject:[user.deviceId urlEncoded] forKey:@"deviceId"];
        [returnDict setObject:[user.deviceType urlEncoded] forKey:@"deviceType"];
        [returnDict setObject:[user.osName urlEncoded] forKey:@"osName"];
        [returnDict setObject:[user.osVersion urlEncoded] forKey:@"osVersion"];
        
        if (user.pinCodeHash && [user.pinCodeHash length]) {
            [returnDict setObject:[user.pinCodeHash urlEncoded] forKey:@"pinCodeHash"];
        }
        if (user.publicKey && [user.publicKey length]) {
            [returnDict setObject:[user.publicKey urlEncoded] forKey:@"publicKey"];
        }
        
        return returnDict;
    }return nil;
}


AFHTTPClient *client = [[AFHTTPClient alloc] initWithBaseURL:baseURL];
NSMutableURLRequest *afRequest = [client multipartFormRequestWithMethod:@"POST"
                                                                           path:path
                                                                     parameters:[User parametersOfUser:user]
                                                      constructingBodyWithBlock:^(id<AFMultipartFormData> formData) {
                                                          /**
                                                           *@discussion If we use multipart, we should only have two parts, one for picture (probably type is image/png) and one for other parameters (type is x-www-form-urlencoded)
                                                           */
                                                          //header
                                                          /*
                                                           NSString *bodyString = [User postBodyStringWithUser:user withPostType:PostTypeMultiPart];
                                                           
                                                           NSMutableDictionary *headers = [NSMutableDictionary dictionaryWithObjectsAndKeys:
                                                           @"application/x-www-form-urlencoded; charset=UTF-8",@"Content-Type",
                                                           [NSString stringWithFormat:@"form-data; name=\"%@\"", @"usr_info"],@"Content-Disposition"
                                                           , nil];
                                                           [formData appendPartWithHeaders:headers body:[bodyString dataUsingEncoding:NSUTF8StringEncoding]];
                                                           */
                                                          //picture part
                                                          if (user.picture2) {
                                                              NSData *data = UIImagePNGRepresentation(user.picture2);
                                                              //NSLog(@"=====data length is %i",[data length]);
                                                              [formData appendPartWithFileData:data
                                                                                          name:@"picture2"
                                                                                      fileName:nil
                                                                                      mimeType:@"image/*"];
                                                          }
                                                      }];
分享到:
评论

相关推荐

    AFNetWorking--iOS

    对于文件上传,可以使用`multipart/form-data`编码方式: ```objc UIImage *image = ...; NSData *imageData = UIImageJPEGRepresentation(image, 1.0); [manager POST:@...

    AFNetworking2.5

    AFNetworking支持Multipart Form Data上传文件,适用于上传图片、音频或视频等大文件。 ```objc NSURL *url = [NSURL URLWithString:@"http://example.com/upload"]; AFHTTPRequestOperation *operation = [...

    UpLoadDemo

    3. **网络请求**:iOS常用网络库有`NSURLSession`(原生)、`Alamofire`、`AFNetworking`等。它们提供了HTTP请求接口,用于上传数据。通常,使用`POST`方法配合`FormData`来上传图片。 4. **Multipart Form Data**...

    UpLoadDeamo

    [manager POST:@"upload/image" parameters:parameters constructingBodyWithBlock:^(id&lt;AFMultipartFormData&gt; _Nonnull formData) { [formData appendPartWithFileData:imageData name:@"image" fileName:@"your...

    iOS图片上传

    图片上传通常涉及到表单数据的提交,因此我们需要使用`multipart/form-data`编码。AFNetworking提供了`uploadTaskWithRequest:fromData:progress:completionHandler:`方法来创建上传任务。以下是一个简单的图片上传...

    ios-swift post get上传图片和snapKit的简易使用.zip

    - 使用`Alamofire`的`upload`方法,你可以发送一个multipart/form-data请求来上传图片。首先,你需要将图片转换为Data类型,然后提供URL路径、参数和多部分表单数据。例如: ```swift let imageData = UIImage...

    基于AFN的二次封装

    同时,为了支持图片上传,封装中可能包含了对UIImage或NSData对象的处理,将其转化为适合网络传输的格式,如Base64编码或者直接通过 multipart/form-data 方式上传。 在实际应用中,二次封装可能会提供以下功能: 1...

    http post 上传图片 原生

    在iOS开发中,则可能涉及`NSURLSession`或`AFNetworking`。以下是对这个主题的详细阐述: **1. Android原生HTTP POST上传** 在Android中,我们可以使用`HttpURLConnection`来实现文件上传。首先,我们需要创建一个...

    自定义AFHTTPRequestOperationManager.

    这个API应该能够接收multipart/form-data类型的数据,解析接收到的图片文件,然后存储到服务器的指定位置。你可以使用PHP内置的`$_FILES`全局变量来访问上传的文件信息。 ```php $target_dir = "uploads/"; $...

    iOS实现文件上传功能

    此外,还需要使用`AFNetworking`或`Alamofire`等第三方库来简化这个过程,这些库已经封装了文件上传的细节。 为了上传文件,我们需要将文件内容包装在请求体中,每个部分都以边界字符串分隔,这样服务器就能正确...

    oc-原生网络请求

    同时,现代iOS开发中,许多开发者选择使用第三方库如AFNetworking,它们提供了更丰富的功能和更友好的API,简化了网络请求的实现。然而,理解原生的网络请求机制仍然是非常重要的,有助于更好地理解和优化网络层的...

    AFURLSessionManager 上传下载使用代码说明

    let url = URL(string: "http://example.com/upload")! // 创建请求 let request = URLRequest(url: url) // 定义上传文件路径 let filePath = URL(fileURLWithPath: "file://path/to/image.png") // 创建上传...

Global site tag (gtag.js) - Google Analytics