上傳多張圖片到服務器

我封裝的使用AFNetworking上傳多圖的一個方法。帶進度條回調(diào),希望對你用幫助,我app中親測可用,不知道你的服務器是如何接收數(shù)據(jù)的:

聲明:

/**

*??上傳帶圖片的內(nèi)容,允許多張圖片上傳(URL)POST

*

*??@param url???????????????? 網(wǎng)絡請求地址

*??@param images??????????????要上傳的圖片數(shù)組(注意數(shù)組內(nèi)容需是圖片)

*??@param parameter?????????? 圖片數(shù)組對應的參數(shù)

*??@param parameters??????????其他參數(shù)字典

*??@param ratio?????????????? 圖片的壓縮比例(0.0~1.0之間)

*??@param succeedBlock????????成功的回調(diào)

*??@param failedBlock???????? 失敗的回調(diào)

*??@param uploadProgressBlock 上傳進度的回調(diào)

*/

+(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;

實現(xiàn):

+(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(@"上傳內(nèi)容沒有包含圖片");

return;

}

for (int i = 0; i < images.count; i++) {

if (![imagesisKindOfClass:[UIImage class]]) {

NSLog(@"images中第%d個元素不是UIImage對象",i+1);

return;

}

}

AFHTTPRequestOperation *operation = [[self sharedOperation].operationManager POST:url parameters:parameters constructingBodyWithBlock:^(id formData) {

int i = 0;

//根據(jù)當前系統(tǒng)時間生成圖片名稱

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);

}];

}

最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

  • 開發(fā)中單張圖片上傳這里不再贅述,下面我們看一下多圖上傳; 1.使用base64轉碼之后上傳 NSMutableDi...
    強強劉閱讀 765評論 10 10
  • 技術無極限,從菜鳥開始,從源碼開始。 由于公司目前項目還是用OC寫的項目,沒有升級swift 所以暫時SDWebI...
    充滿活力的早晨閱讀 12,849評論 0 2
  • Spring Cloud為開發(fā)人員提供了快速構建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,695評論 19 139
  • 上一章解析到- (id)loadImageWithURL:(nullable NSURL *)url option...
    充滿活力的早晨閱讀 631評論 0 0
  • 鳳簫易瑟思前路,望月常思故鄉(xiāng)情。 冬至未盡初曉鳴,且聽風雨且徐行。 等閑變卻故人心,卻道故人心易變。 夢淺夢深夢十...
    零劫點閱讀 692評論 0 2

友情鏈接更多精彩內(nèi)容