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参数和多文件同时上传【多文件上传】相关推荐

  1. 【iOS开发】AFNetworking上传语音文件(.mp3)到服务器

    一.业务环境 将本地的录音文件 .caf 文件通过网络上传到服务器,服务器将此文件保存为 .mp3 格式. 二.实现思路 ( 1 ) 通过使用AVAudioRecorder,将录音文件保存到本地 ( ...

  2. iOS CocoaPods第三方库加载本地文件或服务器上的zip文件(二)

    本篇文章重点介绍,如何加载zip文件压缩包第三方库.如果伙伴们想了解如何加载本地文件请自行翻看上篇文件. 方案: 不废话,直接上代码!编辑我们的WechatOpenSDK.podspec文件: Pod ...

  3. HTML POST提交参数给PHP并返回json,上传execl文件

    微信小程序开发交流qq群   173683895    承接微信小程序开发.扫码加微信. 正文: 需求:AJAX post带参数请求接口,PHP接收后存入数据库:然后返回json数据循环渲染到HTML ...

  4. Flask框架(flask中的request对象,获取请求参数,保存上传的文件)

    1.request中包含了前端发送过来的所有数据 ,请求的 request 对象中保存了一次HTTP请求的一切信息. 通过request.from可以直接发送提取请求体中的表单格式数据,是一个类字典的 ...

  5. ios App上传Excel文件

    今天App有个需求,需要从本地上传Excel文件到后台,大家知道苹果是沙盒机制,App之间不许分享数据. 第一种方式就是App之间共享数据,上传文件大部分人应该是从微信或者QQ等三方应用过来,那么问题 ...

  6. ios上传音频文件到服务器,IOS开发:iPod的音乐库中的音频如何上传到服务器中...

    最近在做的项目里有一个功能,就是拿到手机媒体库中的音频文件,并实现APP中的播放,已经转成MP3格式上传到服务器上. 首先是要能获取到ipod library中的音频.这里我用的是MPMediaQue ...

  7. IOS开发之——上传-获取文件的MIMEType(03)

    一 概述 常用文件的MIMEType 如何通过一次请求获取文件的MIMEType 二 常用文件的MIMEType 2.1 图片 类型 文件拓展名 MIMEType 图片 png image/png 图 ...

  8. Asp.Net 上传大文件专题(4)--利用ajax技术显示上传进度

    ====================================================== 注:本文源代码点此下载 ================================= ...

  9. 蒲公英使用一行命令上传Apk文件

    在安卓开发中,为了给测试人员提供测试包,我们经历了从U盘拷贝.发邮件或者QQ.微信等通讯工具发送测试Apk文件,不像IOS一样有AppleStore的测试模式.安卓就只能自己来想办法给测试组提供测试包 ...

  10. cisco路由器上传下载文件

    通过以下步骤可以对cisco路由器的文件进行操作: 1.      打开TFTP server(3CDaemon.exe): 2.      把音频文件(.au)copy到TFTP指定的目录: 3.  ...

最新文章

  1. 在Flex中使用本地共享对象
  2. Android异步处理:Handler+Looper+MessageQueue深入详解
  3. 调研了10家公司的技术架构,我总结出了一套大数据平台的套路
  4. 拦截Windows消息
  5. 在哪里学python-在合肥哪里可以学Python
  6. golang使用Nsq
  7. 人工智能究竟能否实现?
  8. 用Python 操作Web 前端 基础 1
  9. canvas火焰效果
  10. 相忘于江湖:《监控》
  11. 58同城架构师谈:亿级流量架构演进
  12. 怎样快速查询多个天天欧洲物流单号的在途信息
  13. MySql 导入和导出数据
  14. 中国(温州)数安港“2022数据智能夏令营”圆满收官!
  15. SpringSecurity Oauth2 认证授权(二)springboot快速入门与底层介绍
  16. JAVA实战——视频管理系统构建common, pojo, mapper和service工程
  17. JS--使用第三方库解决浮点数(小数)计算不准确的问题
  18. 仿链家地图找房_全网稀缺,完整链家地图找房的实现(一)
  19. linux下设置密码复杂度限制的两种方法
  20. 薰衣草的花语~~~~~~等待爱情

热门文章

  1. iOS上文本处理之简史
  2. ce测试数据文章ce测试数据文章ce测试数据文章
  3. Power of Three
  4. 汇编语言程序设计,计算比赛成绩
  5. .net 将html写成的table 转换成excel_Python读取二进制,HTML,XML格式存储Excel
  6. c语言中bluetooth函数,C语言中的低功耗蓝牙-使用Bluez创建GATT服务器
  7. hadoop学习3 查找块的位置
  8. python 通过下载包setup.py安装模块
  9. 研一寒假02-指针_new分配内存_使用new来创建动态数组_使用动态数组_使用delete来释放new分配的内存...
  10. 使用airdrop进行文件共享