標籤:ssi 數組 expected manage failure formdata tar 接收 object
我封裝的使用AFNetworking上傳多圖的一個方法。帶進度條回調,希望對你用協助,我app中親測可用,不知道你的伺服器是如何接收資料的:
/*** 上傳帶圖片的內容,允許多張圖片上傳(URL)POST** @param url 網路請求地址* @param images 要上傳的圖片數組(注意數組內容需是圖片)* @param parameter 圖片數組對應的參數 (注意多張圖片,每張的圖片名應該不同)* @param parameters 其他參數字典* @param ratio 圖片的壓縮比例(0.0~1.0之間)* @param succeedBlock 成功的回調* @param failedBlock 失敗的回調* @param uploadProgressBlock 上傳進度的回調*/+(void)startMultiPartUploadTaskWithURL:(NSString *)url imagesArray:(NSArray *)images parameterOfimages:(NSString *)parameter parametersDict:(NSDictionary *)parameters compressionRatio:(float)ratio succeedBlock:(void(^)(id operation, id responseObject))succeedBlock failedBlock:(void(^)(id operation, NSError *error))failedBlock uploadProgressBlock:(void(^)(float uploadPercent,long long totalBytesWritten,long long totalBytesExpectedToWrite))uploadProgressBlock;實現:+(void)startMultiPartUploadTaskWithURL:(NSString *)url imagesArray:(NSArray *)images parameterOfimages:(NSString *)parameter parametersDict:(NSDictionary *)parameters compressionRatio:(float)ratio succeedBlock:(void (^)(id, id))succeedBlock failedBlock:(void (^)(id, NSError *))failedBlock uploadProgressBlock:(void (^)(float, long long, long long))uploadProgressBlock{ if (images.count == 0) { NSLog(@"上傳內容沒有包含圖片"); return; } for (int i = 0; i < images.count; i++) { if (![images isKindOfClass:[UIImage class]]) { NSLog(@"images中第%d個元素不是UIImage對象",i+1); return; } } AFHTTPRequestOperation *operation = [[self sharedOperation].operationManager POST:url parameters:parameters constructingBodyWithBlock:^(id<AFMultipartFormData> formData) { int i = 0; //根據當前系統時間產生圖片名稱 NSDate *date = [NSDate date]; NSDateFormatter *formatter = [[NSDateFormatter alloc]init]; [formatter setDateFormat:@"yyyy年MM月dd日"]; NSString *dateString = [formatter stringFromDate:date]; for (UIImage *image in images) { NSString *fileName = [NSString stringWithFormat:@"%@%d.png",dateString,i]; NSData *imageData; if (ratio > 0.0f && ratio < 1.0f) { imageData = UIImageJPEGRepresentation(image, ratio); }else{ imageData = UIImageJPEGRepresentation(image, 1.0f); } [formData appendPartWithFileData:imageData name:parameter fileName:fileName mimeType:@"image/jpg/png/jpeg"]; } } success:^(AFHTTPRequestOperation *operation, id responseObject) { succeedBlock(operation,responseObject); } failure:^(AFHTTPRequestOperation *operation, NSError *error) { NSLog(@"%@",error); failedBlock(operation,error); }]; [operation setUploadProgressBlock:^(NSUInteger bytesWritten, long long totalBytesWritten, long long totalBytesExpectedToWrite) { CGFloat percent = totalBytesWritten * 1.0 / totalBytesExpectedToWrite; uploadProgressBlock(percent,totalBytesWritten,totalBytesExpectedToWrite); }]; }
iOS 一次上傳多張圖片, 並返回進度值