日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

iOS-AFNetworking参数和多文件同时上传【多文件上传】

發布時間:2023/12/13 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 iOS-AFNetworking参数和多文件同时上传【多文件上传】 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1. 前言

? ? 在項目開發中,我們經常需要上傳文件,例如:上傳圖片,上傳各種文件,而有時也需要將參數和多個文件一起上傳,不知道大家的項目中遇到了沒有,我在最近的項目中,就需要這樣的一個功能:同時上傳參數、多張圖片和音頻;

2. 功能實現

在實現此功能之前,需要引入第三方AFNetworking,這是一個非常強大的網絡開發工具,這里我就不多說了,下面是我用此工具,封裝的一個同時上傳參數和多個文件的方法:

2.1?方法名

/**多文件上傳,支持同時上傳參數、多個圖片、多個音頻,【圖片為date流,音頻為沙盒路徑,用數組傳過去】url:請求的網絡地址pram:請求參數【我一般用dictionary】arrayImg:圖片date類型數組arrayAudio:音頻地址數組success:上傳成功回調faile:上傳失敗回調progress:上傳進度回調*/+ (void)uploadMoreFileHttpRequestURL:(NSString *)url RequestPram:(id)pram arrayImg:(NSArray *)arrayImg arrayAudio:(NSArray *)arrayAudio RequestSuccess:(void(^)(id respoes))success RequestFaile:(void(^)(NSError *erro))faile UploadProgress:(void(^)(NSProgress * uploadProgress))progress;

?

2.2 方法實現

+ (void)uploadMoreFileHttpRequestURL:(NSString *)url RequestPram:(id)pram arrayImg:(NSArray *)arrayImg arrayAudio:(NSArray *)arrayAudio RequestSuccess:(void(^)(id respoes))success RequestFaile:(void(^)(NSError *erro))faile UploadProgress:(void(^)(NSProgress * uploadProgress))progress{AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];manager.requestSerializer = [AFHTTPRequestSerializer serializer];manager.responseSerializer = [AFHTTPResponseSerializer serializer];[manager POST:url parameters:pram constructingBodyWithBlock:^(id<AFMultipartFormData> _Nonnull formData) {///用時間設置文件名 NSDate *date = [NSDate date];NSDateFormatter *formatter = [[NSDateFormatter alloc] init];[formatter setDateFormat:@"yyyyMMddhhmmss"];NSString *dateNow = [formatter stringFromDate:date];NSString *imgFileId = @"handsomekkImg";// NSString *avdioFileId = @"ebookAvdio";///圖片文件data追加for (int i = 0; i < arrayImg.count; i++) {///文件名:這是多個文件名不一樣,多以我就用i實現 NSString *fileName = [NSString stringWithFormat:@"%@%@%d.png",imgFileId,dateNow,i];///圖片支持類型jpg/png/jpeg [formData appendPartWithFileData:arrayImg[i] name:[NSString stringWithFormat:@"%@%d",imgFileId,i] fileName:fileName mimeType:@"jpg/png/jpeg"];}/// 此處是音頻,我傳的是音頻文件本地沙盒地址,所以用 appendPartWithFileURL 方法/// for (int i = 0; i < arrayAudio.count; i++) { /// NSString *fileName = [NSString stringWithFormat:@"%@%@%d.caf",avdioFileId,dateNow,i];/// [formData appendPartWithFileURL:[NSURL URLWithString:arrayAudio[i]] name:[NSString stringWithFormat:@"%@%d",arrayAudio,i] fileName:fileName mimeType:@"application/octet-stream" error:nil]; /// } } progress:^(NSProgress * _Nonnull uploadProgress) {///進度回調 progress(uploadProgress);} success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) {///上傳功能回調if (success) {success(responseObject);}} failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {///失敗回調 faile(error);}];}

?

方法中,我們不要求上傳的文件名固定,多以文件名不一樣就可以,后臺去取出來;可以根據自己的需求,定義上傳的文件名就可以。

?

轉載于:https://www.cnblogs.com/wangkejia/p/7587314.html

總結

以上是生活随笔為你收集整理的iOS-AFNetworking参数和多文件同时上传【多文件上传】的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。