AFNetWorking 文件上传 By-H罗
一.文件上传(图片,音频,视频,文本等)(不带进度)
- /**
- * 文件上传 导入 #import "AFNetworking.h"
- * @param filePath 上传文件本地路径
- */
- -(void)uploadfile:(NSString *)filePath
- {
- //服务器所需参数(根据服务器需要设置)
- NSMutableDictionary *params=[NSMutableDictionary dictionary];
- [params setObject:@"0" forKey:@"uptype"]; //0-表单上传 1-字节流上传
- [params setObject:@"VEJQemdPdDd6ZEdhYWY1" forKey:@"key"];
- NSData *fileData=[NSData dataWithContentsOfFile:filePath]; //二进制数据
- NSString *fileName=[filePath lastPathComponent]; //文件名
- NSString *mimeType=[self getMIMEType:filePath]; //文件类型
- if (!mimeType) {
- mimeType = @"application/octet-stream"; //不知道文件类型
- }
- AFHTTPRequestOperationManager *requestManager = [AFHTTPRequestOperationManager manager];
- requestManager.responseSerializer = [AFHTTPResponseSerializer serializer];//这个有时必须设置
- requestManager.requestSerializer.timeoutInterval=45.f;//请求超时45S
- [requestManager POST:@"http://218.107.2.205:8080/mage/upload/file/save?" parameters:params constructingBodyWithBlock:^(id<AFMultipartFormData> formData) {
- [formData appendPartWithFileData:fileData name:@"file" fileName:fileName mimeType:mimeType];
- } success:^(AFHTTPRequestOperation *operation, id responseObject) {
- //系统自带JSON解析
- NSDictionary *resultJsonDic = [NSJSONSerialization JSONObjectWithData:operation.responseData options:NSJSONReadingMutableLeaves error:nil];
- NSLog(@"上传成功resultJsonDic-%@",resultJsonDic);
- } failure:^(AFHTTPRequestOperation *operation, NSError *error) {
- NSLog(@"上传失败Error-%@",error);
- }];
- }
二.文件上传(带上传进度)
- /**
- * 功能 AFNetWorking带进度指示文件上传
- * @param filePath 文件路径
- */
- -(void)uploadfile:(NSString *)filePath
- {
- //服务器所需参数(非必须)
- NSMutableDictionary *params=[NSMutableDictionary dictionary];
- [params setObject:@"0" forKey:@"uptype"]; //0-表单上传 1-字节流上传
- [params setObject:@"VEJQemdPdDd6ZEdhYWY1" forKey:@"key"];
- NSData *fileData=[NSData dataWithContentsOfFile:filePath]; //二进制数据
- NSString *fileName=[filePath lastPathComponent]; //文件名
- NSString *mimeType=[self getMIMEType:filePath]; //文件类型
- if (!mimeType) {
- mimeType = @"application/octet-stream";
- }
- AFHTTPRequestOperationManager *requestManager = [AFHTTPRequestOperationManager manager];
- requestManager.responseSerializer = [AFHTTPResponseSerializer serializer];
- requestManager.requestSerializer.timeoutInterval=15.f;//请求超时45S
- NSMutableURLRequest *request = [requestManager.requestSerializer multipartFormRequestWithMethod:@"POST" URLString:SBUploadFileurl parameters:params constructingBodyWithBlock:^(id<AFMultipartFormData> formData) {
- [formData appendPartWithFileData:fileData name:@"file" fileName:fileName mimeType:mimeType];
- } error:nil];
- AFHTTPRequestOperation *operation = [requestManager HTTPRequestOperationWithRequest:request
- success:^(AFHTTPRequestOperation *operation, id responseObject) {
- // //系统自带JSON解析
- NSDictionary *resultJsonDic = [NSJSONSerialization JSONObjectWithData:operation.responseData options:NSJSONReadingMutableLeaves error:nil];
- NSLog(@"上传成功--%@",resultJsonDic);
- } failure:^(AFHTTPRequestOperation *operation, NSError *error) {
- NSLog(@"失败--%@",error);
- }];
- [operation setUploadProgressBlock: ^(NSUInteger bytesWritten, long long totalBytesWritten, long long totalBytesExpectedToWrite) {
- float progress=(float)totalBytesWritten / totalBytesExpectedToWrite;
- NSLog(@"上传进度 = %f",progress);
- }];
- [request setTimeoutInterval:25.0f];
- [requestManager.operationQueue addOperation:operation];
- }
获取上传文件类型
http://tool.oschina.net/commons 上传文件类型mimeType对照表
- /**
- * 功能 获取文件类型 方式一
- * @param path 文件路径
- * @return MIMEType
- */
- -(NSString*)getMIMEType:(NSString *)path
- {
- NSError *error;
- NSURLResponse*response;
- NSURLRequest*request = [NSURLRequest requestWithURL:[NSURL fileURLWithPath:path]];
- [NSURLConnection sendSynchronousRequest:request
- returningResponse:&response
- error:&error];
- return [response MIMEType];
- }
- /**
- * 获取MIMEType方式二
- */
- - (NSString*) getMIMEType2: (NSString *) path
- {
- if (![[NSFileManager defaultManager] fileExistsAtPath:path]) {
- return nil;
- }
- // Borrowed from http://stackoverflow.com/questions/5996797/determine-mime-type-of-nsdata-loaded-from-a-file
- // itself, derived from http://stackoverflow.com/questions/2439020/wheres-the-iphone-mime-type-database
- CFStringRef UTI = UTTypeCreatePreferredIdentifierForTag(kUTTagClassFilenameExtension, (__bridge CFStringRef)[path pathExtension], NULL);
- CFStringRef mimeType = UTTypeCopyPreferredTagWithClass (UTI, kUTTagClassMIMEType);
- CFRelease(UTI);
- if (!mimeType) {
- return @"application/octet-stream";
- }
- return (__bridge NSString *)mimeType;
- }
AFNetWorking 文件上传 By-H罗的更多相关文章
- AFNetworking 文件上传Data,File图片,文件等上传
一:AFNetworking的文件上传: 主要几个以下类似 - (BOOL)appendPartWithFileURL:(NSURL *)fileURL name:(NSString *)name e ...
- iOS开发系列-文件上传
概述 Http协议对文件上传协议要求的 1. 必须设置请求头Content-Type为multipart/form-data.在iOS中后面需要跟上分隔符比如:boundary=----WebKitF ...
- iOS-利用AFNetworking(AFN 1.x)-实现文件上传
转:http://www.kaifazhe.com/ios_school/380067.html 官方建议AFN的使用方法 1. 定义一个全局的AFHttpClient:包含有 1> baseU ...
- iOS- 利用AFNetworking(AFN) - 实现文件上传
官方建议AFN的使用方法 1. 定义一个全局的AFHttpClient:包含有 1> baseURL 2> 请求 3> 操作队列 NSOperationQueue 2. 由AFHTT ...
- NSURLConnection实现文件上传和AFNetworking实现文件上传
请求的步骤分为4步 1.创建请求 2.设置请求头(告诉服务器这是一个文件上传的请求) 3.设置请求体 4.发送请求 NSURLConnection实现文件上传 // 1.创建请求 NSURL *url ...
- iOS分享 - AFNetworking之多图片/文件上传
在分享经验之前,先说点题外话,之前的一个项目涉及到了多图片的上传,本来以为是一个很简单的事情,却着实困扰了我好久,究其原因,一是我不够细心,二是与后台人员的交流不够充分.在此,我想将我的老师常说的一句 ...
- AFNetworking之多图片-文件上传
在分享经验之前,先说点题外话,之前的一个项目涉及到了多图片的上传,本来以为是一个很简单的事情,却着实困扰了我好久,究其原因,一是我不够细心,二是与后台人员的交流不够充分.在此,我想将我的老师常说的一句 ...
- iOS开发-AFNetworking参数和多文件同时上传【多文件上传】
1. 前言 在项目开发中,我们经常需要上传文件,例如:上传图片,上传各种文件,而有时也需要将参数和多个文件一起上传,不知道大家的项目中遇到了没有,我在最近的项目中,就需要这样的一个功能:同时上传参数. ...
- iOS开发之AFNetworking实现数据传输和文件上传
//传输数据 1 AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager]; manager.r ...
随机推荐
- Win10 开启 Hyper-V 及简单使用
简介 Windows 10 上内置了 Hyper-V.Hyper-V 提供硬件虚拟化,每个虚拟机都在虚拟硬件上运行. 系统要求 Windows 10 企业版.专业版或教育版.家庭版.移动版.移动企业版 ...
- python 数据库查询,将查询的列名也保存下来,返回字典类型的数据
前言: python + pymysql:通过pymysql,查询到符合要求的数据,不做类型转化的,返回的时元组类型的数据,可以根据下标,取想要的值. self.cursor.execute(sql) ...
- Redis_安装配置(2)
一.安装gcc依赖 由于 redis 是用 C 语言开发,安装之前必先确认是否安装 gcc 环境(gcc -v),如果没有安装,执行以下命令进行安装 $ yum install -y gcc 上面命令 ...
- Nginx 加载conf.d (内文件***.conf)
include /usr/local/nginx/conf/conf.d/*.conf;
- Oracle 五种约束的创建和移除:
1.主键约束: 创建表的时候就添加: create table table_name (categoryId varchar2(10), categoryName varchar2(30), prim ...
- 在CentOS7上安装 jq
安装EPEL源: yum install epel-release 安装完EPEL源后,可以查看下jq包是否存在: yum list jq 安装jq: yum -y install jq 命令参考资料 ...
- react中create-react-app详情配置文档
https://facebook.github.io/create-react-app/docs/documentation-intro
- Linux上天之路系列目录
Linux上天之路系列目录 Linux上天之路(一)之Linux前世今生 Linux上天之路(二)之Linux安装 Linux上天之路(三)之Linux系统目录 Linux上天之路(四)之Linux界 ...
- mongodb基础整理篇————常规操作[二]
前言 简单整理一下常规操作. 正文 虽然一般说写代码看的是思想,但是呢,如果不知道mongodb 有哪些常用的操作,那么你怎么能知道mongodb是否符合你的需求,比如说如果聚合功能都没有,你得自己写 ...
- 360浏览器兼容模式下jsp页面访问不到js文件
360浏览器兼容模式下jsp页面访问不到js文件 查看自己js中的语法问题,不要用ES6的语法,编译不了故找不到js文件 const var of 码出高效 java 比较 所有整型包装类对象之间值的 ...