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参数和多文件同时上传【多文件上传】相关推荐
- 【iOS开发】AFNetworking上传语音文件(.mp3)到服务器
一.业务环境 将本地的录音文件 .caf 文件通过网络上传到服务器,服务器将此文件保存为 .mp3 格式. 二.实现思路 ( 1 ) 通过使用AVAudioRecorder,将录音文件保存到本地 ( ...
- iOS CocoaPods第三方库加载本地文件或服务器上的zip文件(二)
本篇文章重点介绍,如何加载zip文件压缩包第三方库.如果伙伴们想了解如何加载本地文件请自行翻看上篇文件. 方案: 不废话,直接上代码!编辑我们的WechatOpenSDK.podspec文件: Pod ...
- HTML POST提交参数给PHP并返回json,上传execl文件
微信小程序开发交流qq群 173683895 承接微信小程序开发.扫码加微信. 正文: 需求:AJAX post带参数请求接口,PHP接收后存入数据库:然后返回json数据循环渲染到HTML ...
- Flask框架(flask中的request对象,获取请求参数,保存上传的文件)
1.request中包含了前端发送过来的所有数据 ,请求的 request 对象中保存了一次HTTP请求的一切信息. 通过request.from可以直接发送提取请求体中的表单格式数据,是一个类字典的 ...
- ios App上传Excel文件
今天App有个需求,需要从本地上传Excel文件到后台,大家知道苹果是沙盒机制,App之间不许分享数据. 第一种方式就是App之间共享数据,上传文件大部分人应该是从微信或者QQ等三方应用过来,那么问题 ...
- ios上传音频文件到服务器,IOS开发:iPod的音乐库中的音频如何上传到服务器中...
最近在做的项目里有一个功能,就是拿到手机媒体库中的音频文件,并实现APP中的播放,已经转成MP3格式上传到服务器上. 首先是要能获取到ipod library中的音频.这里我用的是MPMediaQue ...
- IOS开发之——上传-获取文件的MIMEType(03)
一 概述 常用文件的MIMEType 如何通过一次请求获取文件的MIMEType 二 常用文件的MIMEType 2.1 图片 类型 文件拓展名 MIMEType 图片 png image/png 图 ...
- Asp.Net 上传大文件专题(4)--利用ajax技术显示上传进度
====================================================== 注:本文源代码点此下载 ================================= ...
- 蒲公英使用一行命令上传Apk文件
在安卓开发中,为了给测试人员提供测试包,我们经历了从U盘拷贝.发邮件或者QQ.微信等通讯工具发送测试Apk文件,不像IOS一样有AppleStore的测试模式.安卓就只能自己来想办法给测试组提供测试包 ...
- cisco路由器上传下载文件
通过以下步骤可以对cisco路由器的文件进行操作: 1. 打开TFTP server(3CDaemon.exe): 2. 把音频文件(.au)copy到TFTP指定的目录: 3. ...
最新文章
- 在Flex中使用本地共享对象
- Android异步处理:Handler+Looper+MessageQueue深入详解
- 调研了10家公司的技术架构,我总结出了一套大数据平台的套路
- 拦截Windows消息
- 在哪里学python-在合肥哪里可以学Python
- golang使用Nsq
- 人工智能究竟能否实现?
- 用Python 操作Web 前端 基础 1
- canvas火焰效果
- 相忘于江湖:《监控》
- 58同城架构师谈:亿级流量架构演进
- 怎样快速查询多个天天欧洲物流单号的在途信息
- MySql 导入和导出数据
- 中国(温州)数安港“2022数据智能夏令营”圆满收官!
- SpringSecurity Oauth2 认证授权(二)springboot快速入门与底层介绍
- JAVA实战——视频管理系统构建common, pojo, mapper和service工程
- JS--使用第三方库解决浮点数(小数)计算不准确的问题
- 仿链家地图找房_全网稀缺,完整链家地图找房的实现(一)
- linux下设置密码复杂度限制的两种方法
- 薰衣草的花语~~~~~~等待爱情
热门文章
- iOS上文本处理之简史
- ce测试数据文章ce测试数据文章ce测试数据文章
- Power of Three
- 汇编语言程序设计,计算比赛成绩
- .net 将html写成的table 转换成excel_Python读取二进制,HTML,XML格式存储Excel
- c语言中bluetooth函数,C语言中的低功耗蓝牙-使用Bluez创建GATT服务器
- hadoop学习3 查找块的位置
- python 通过下载包setup.py安装模块
- 研一寒假02-指针_new分配内存_使用new来创建动态数组_使用动态数组_使用delete来释放new分配的内存...
- 使用airdrop进行文件共享