【问题标题】:Upload multiple Image or File using AFNetworking,使用 AFNetworking 上传多个图像或文件,
【发布时间】:2018-08-06 11:31:04
【问题描述】:

我想使用 AFNetworking 上传多张图片。 像这样Please Check This Image

我附上了邮递员的例子。

我的代码:

NSString *key = [[mediaInfo allKeys] objectAtIndex:0];
NSDictionary *dict = [[mediaInfo objectForKey:key] objectAtIndex:0];
UIImage *image = [dict objectForKey:IQMediaImage];

NSMutableDictionary    *dictParam = [[NSMutableDictionary alloc] init];
[dictParam setValue:imageData forKey:@"Files"];

AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
    [manager POST:@BaseURL(@"/MediaUpload") parameters:dictParam progress:nil success:^(NSURLSessionDataTask * _Nonnull task, id  _Nullable responseObject) {

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

AFNetworking 3.0

【问题讨论】:

    标签: ios objective-c afnetworking


    【解决方案1】:

    AFURLSessionManager查看这个方法:

    - (NSURLSessionUploadTask *)uploadTaskWithRequest:(NSURLRequest *)request
                                         fromFile:(NSURL *)fileURL
                                         progress:(void (^)(NSProgress *uploadProgress)) uploadProgressBlock
                                completionHandler:(void (^)(NSURLResponse *response, id responseObject, NSError *error))completionHandler
    

    完整代码实现:

    NSURLSessionConfiguration *configuration = [NSURLSessionConfiguration defaultSessionConfiguration];
    AFURLSessionManager *sessionManager = [[AFURLSessionManager alloc] initWithSessionConfiguration:configuration];
    
    [[sessionManager uploadTaskWithRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@BaseURL(@"/MediaUpload")]]
                                  fromFile:[NSURL fileURLWithPath:@"/path/to/uploading_file"]
                                  progress:^(NSProgress * _Nonnull uploadProgress) { }
                         completionHandler:^(NSURLResponse * _Nonnull response, id  _Nullable responseObject, NSError * _Nullable error) {
    }] resume];
    

    【讨论】:

      【解决方案2】:
      AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
      manager.requestSerializer = [AFJSONRequestSerializer serializer];
      [manager.requestSerializer setValue:@"multipart/form­data" forHTTPHeaderField:@"Content-Type"];
      
      [manager POST:[NSString stringWithFormat:@"%@/api/1.0/customer/sign-up", DEFAULT_URL] parameters:parameters constructingBodyWithBlock:^(id<AFMultipartFormData>  _Nonnull formData) {
      
      if (userHaveImage == YES) {
          [formData appendPartWithFileData:image name:@"img_profile" fileName:@"profileImage.jpg" mimeType:@"image/jpg"];
          [formData appendPartWithFormData:image name:@"img_profile"];
      }
      

      然后将图像转换为 UTF8 字符串并以该格式发送。

      【讨论】:

      • 你的回答是对的。但我问我们可以直接传递图像吗?无需转换数据。或者没有传递图像 URL。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-03-13
      • 1970-01-01
      • 2014-02-20
      • 2013-11-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多