使用AFNetWorking 上传文件/图片

之前项目一直用thrift。

现在改成http, 为啥没有用https,后台说他们在后台已经加密了。

使用AFNetWorking 上传文件/图片

 

用AFHTTPSessionManager中的这个方法

- (NSURLSessionDataTask *)POST:(NSString *)URLString
                    parameters:(id)parameters
     constructingBodyWithBlock:(void (^)(id <AFMultipartFormData> formData))block
                      progress:(nullable void (^)(NSProgress * _Nonnull))uploadProgress
                       success:(void (^)(NSURLSessionDataTask *task, id responseObject))success
                       failure:(void (^)(NSURLSessionDataTask *task, NSError *error))failure;

 

tokenId可以作为参数放到parameters

然后注意file字段:这个file 就是

 

[formData appendPartWithFileData:file[@"buff"] name:@"file" fileName:file[@"name"] mimeType:@"image/*"];

name的值。之前没搞懂。

 

[[WLFNetWorkManager shared] POST:FILE_UPLOAD_URL parameters:@{@"tokenId":tokenId} constructingBodyWithBlock:^(id<AFMultipartFormData>  _Nonnull formData) {
        
        [formData appendPartWithFileData:file[@"buff"] name:@"file" fileName:file[@"name"] mimeType:@"image/*"];
        
        
    } progress:^(NSProgress * _Nonnull uploadProgress) {
        
        //NSLog(@"uploadProgress = %@",uploadProgress);
    } success:^(NSURLSessionDataTask * _Nonnull task, id  _Nullable responseObject) {
        
        NSString *json = [[NSString alloc]initWithData:responseObject encoding:NSUTF8StringEncoding];
        NSDictionary *retDict = [[WLFDataTransformTool shareInstance] dictionaryWithJsonString:json];
        complete(retDict);
        /*
         {
             code = 1;
             data =     {
                 fileId = 114587;
                 fileSize = 5081851;
                 fileUrl = "/11/2020/3/18/5c4e397d-13e8-4b05-bc18-3a093ca28dc6.jpg";
             };
             msg = "文件上传成功";
         }
         */

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

 

这里也顺便记录一下thrift的使用步骤。

后台边写好了thrift文件之后,然后在thrift/ 同级目录下运行命令:

thrift -out /Users/udc/Desktop/thrift_interface -I ./ --gen cocoa udc_all.thrift

生成

udc_all.h
udc_all.m 

两个OC文件。这两个文件中就是相关接口,直接调用就可以了。另外一些模型啊,返回码,状态码。都在thrift/文件中定义了,不用自己写。

如果想生成其他语言接口文件,可以试试如下命令。

#thrift -out /Users/udc/Desktop/thrift_interface -I ./ --gen swift udc_all.thrift

#thrift -out /Users/udc/Desktop/thrift_interface -I ./ --gen cpp udc_all_cpp.thrift

#thrift -out /Users/udc/Desktop/thrift_interface -I ./ --gen js udc_all_js.thrift

 

上一篇:Spring boot 拾遗 —— Spring Cache 扩展 Duration


下一篇:融云即时通讯sdk, 把头像设置为圆角图片在4.x和5.x的区别 -- 融云即时聊天sdk使用小技巧