湖北专业网站建设大全,html5 音乐网站,外贸营销词,芜湖网站建设求职简历1. 前言 在项目开发中#xff0c;我们经常需要上传文件#xff0c;例如#xff1a;上传图片#xff0c;上传各种文件#xff0c;而有时也需要将参数和多个文件一起上传#xff0c;不知道大家的项目中遇到了没有#xff0c;我在最近的项目中#xff0c;就需要这样的一个…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:^(idAFMultipartFormData _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