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 = ; 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);
}];
}
方法中,我们不要求上传的文件名固定,多以文件名不一样就可以,后台去取出来;可以根据自己的需求,定义上传的文件名就可以。
iOS-AFNetworking参数和多文件同时上传【多文件上传】的更多相关文章
- iOS开发-AFNetworking参数和多文件同时上传【多文件上传】
1. 前言 在项目开发中,我们经常需要上传文件,例如:上传图片,上传各种文件,而有时也需要将参数和多个文件一起上传,不知道大家的项目中遇到了没有,我在最近的项目中,就需要这样的一个功能:同时上传参数. ...
- CURL模拟表单post提交及相关常用参数的使用(包括提交表单同时上传文件)
转载自:https://blog.csdn.net/freedomwjx/article/details/43278157 (注:在curl前面加上time如time curl xxx,可以在最后显示 ...
- PHP代码中使用post参数上传大文件
今天连续碰到了两个同事向我反应上传大文件(8M)失败的事情! 都是在PHP代码中通常使用post参数进行上传文件时,当文件的大小大于8M时,上传不能不成功. 首先,我想到了nginx的client_m ...
- HttpWebRequest上传多文件和多参数——整理
1.整理HttpWebRequest上传多文件和多参数.较上一个版本,更具普适性和简易型.注意(服务方web.config中要配置)这样就可以上传大文件了 <system.webServer&g ...
- C# HttpWebRequest 后台调用接口上传大文件以及其他参数
直接上代码,包各位看客能用!!! 1.首先请求参数的封装 /// <summary> /// 上传文件 - 请求参数类 /// </summary> public class ...
- SpringBoot - 实现文件上传1(单文件上传、常用上传参数配置)
Spring Boot 对文件上传做了简化,基本做到了零配置,我们只需要在项目中添加 spring-boot-starter-web 依赖即可. 一.单文件上传 1,代码编写 (1)首先在 stati ...
- 上传文件表单file,限制上传文件类型的方法--参数accept
我们使用<input type="file" />来上传文件,但是当你只想要上传某种格式的文件,比如说(jpg)文件时.可以通过accept来限制. <form& ...
- SpringBoot - 实现文件上传2(多文件上传、常用上传参数配置)
在前文中我介绍了 Spring Boot 项目如何实现单文件上传,而多文件上传逻辑和单文件上传基本一致,下面通过样例进行演示. 多文件上传 1,代码编写 1)首先在 static 目录中创建一个 up ...
- iOS | AFNetworking封装
为大家分享一个IOS处理网络请求,网络上传,网络下载等功能全面的一个第三方框架-AFNetworking,这是一个使用非常方便的网络框架. 最新的版本是基于NSURLSession,原来的NSURLC ...
- 使用QFileInfo类获取文件信息(在NTFS文件系统上,出于性能考虑,文件的所有权和权限检查在默认情况下是被禁用的,通过qt_ntfs_permission_lookup开启和操作。absolutePath()必须查询文件系统。而path()函数,可以直接作用于文件名本身,所以,path() 函数的运行会更快)
版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/Amnes1a/article/details/65444966QFileInfo类为我们提供了系统无 ...
随机推荐
- js数组合并(一个数组添加到另一个数组里面)方法
js定义两个数组. var arrA=[1,2,3]; var arrB=[4,5,6]; 要实现[1,2,3,4,5,6],如果直接arrA.push(arrB); 则arrB只会作为了arrA的一 ...
- LA 3942 && UVa 1401 Remember the Word (Trie + DP)
题意:给你一个由s个不同单词组成的字典和一个长字符串L,让你把这个长字符串分解成若干个单词连接(单词是可以重复使用的),求有多少种.(算法入门训练指南-P209) 析:我个去,一看这不是一个DP吗?刚 ...
- 用eclipse创建maven的webapp项目
来自http://www.cnblogs.com/candle806/p/3439469.html和http://blog.csdn.net/chuyuqing/article/details/288 ...
- struts2-core-2.3.20.jar
核心配置位于该jar struts-default.xml struts-2.3.dtd <?xml version="1.0" encoding="UTF-8&q ...
- Ubuntu 14.04 LTC 有线网络--网线不识别,灯不亮问题
sudo ethtool -s eth0 autoneg off speed 100 duplex full
- jvm不打印异常栈
生产环境抛异常,但却没有将堆栈信息输出到日志,确认打印日志方法正确logger.error("somthing error", ex); JVM启动参数加上-XX:-OmitSta ...
- POJ2502乘坐地铁上学
POJ2502 题目大意:给你一个二维地图,起点终点,以及多条地铁线路(只有相邻两站才可互通)中的站点坐标.步行以及坐地铁的速度: 思路:难点在于建图,一个多小时磨磨蹭蹭,都是因为思路没捋清楚~~,对 ...
- javascript data format
Date.prototype.Format = function(fmt) { var o = { "M+" : this.getMonth()+1, //月份 "d+& ...
- c#位运算小例子笔记
关于位运算,网上有挺多好的博客介绍过,我就不多解释了 这里只记录一个小例子,是在理解位运算时候写的,帮助自己加深一下印象,做个笔记mark一下 具体场景 摇骰子游戏 1每个骰子有6个点,1-3为小,4 ...
- 机器学习、深度学习、和AI算法可以在网络安全中做什么?
本文由 网易云发布. 本文作者:Alexander Polyakov,ERPScan的首席技术官和联合创始人.EAS-SEC总裁,SAP网络安全传播者. 现在已经出现了相当多的文章涉及机器学习及其保 ...