iOS
来源:互联网 发布:电信软件市场 编辑:程序博客网 时间:2024/05/01 01:57
项目中,我们经常会用到上传图片的功能,而目前的上传图片分为两种(我只知道两种,哈哈哈),一种是以将图片加密转成字符串的形式,另一种是以文件流的形式进行上传。记得去年12月份在网上随便找了一下,可能是我太low,找了好久没找到。本来早就想总结一下,可是呢...我吧...懒得看AFNetworking源码,就一直搁置了,今天工作做完了,正好分享一下。
第一种方式:文件流方式进行上传
AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
//接收类型不一致请替换一致text/html或别的
manager.responseSerializer.acceptableContentTypes = [NSSetsetWithObjects:@"application/json",
@"text/html",
@"image/jpeg",
@"image/png",
@"application/octet-stream",
@"text/json",
nil];
NSURLSessionDataTask *task = [managerPOST:url parameters:nilconstructingBodyWithBlock:^(id<AFMultipartFormData> _Nonnull formData) {
NSData *imageData =UIImageJPEGRepresentation(image,1);
NSDateFormatter *formatter = [[NSDateFormatteralloc] init];
formatter.dateFormat =@"yyyyMMddHHmmss";
NSString *str = [formatterstringFromDate:[NSDatedate]];
NSString *fileName = [NSStringstringWithFormat:@"%@.jpg", str];
//上传的参数(上传图片,以文件流的格式)
[formData appendPartWithFileData:imageData
name:@"file"
fileName:fileName
mimeType:@"image/jpeg"];
} progress:^(NSProgress *_Nonnull uploadProgress) {
//打印下上传进度
} success:^(NSURLSessionDataTask *_Nonnull task, id _Nullable responseObject) {
//上传成功
+ (NSString *)imageBase64WithDataURL:(UIImage *)image
{
NSData *imageData =nil;
NSString *mimeType =nil;
//图片要压缩的比例,此处100根据需求,自行设置
CGFloat x =100 / image.size.height;
if (x >1)
{
x = 1.0;
}
imageData = UIImageJPEGRepresentation(image, x);
mimeType = @"image/jpeg";
return [NSStringstringWithFormat:@"data:%@;base64,%@", mimeType,
[imageData base64EncodedStringWithOptions:0]];
}
- iOS
- iOS
- IOS
- iOS
- iOS
- IOS
- ios
- iOS
- iOS
- IOS
- iOS
- ios
- ios ~~~~~
- ios
- IOS
- IOS
- IOS
- ios
- 试着用React写项目-利用react-router解决跳转路由等问题(三)
- Activity四种启动模式
- Linux 远程调用图形界面
- JAVA之动态代理,静态代理和CGLIB
- Table布局核心:table标签设置 border="0" cellspacing="0" cellpadding="0",td设置左边框和上边框,table设置下边框和右边框
- iOS
- Android 对TextView添加删除线,下划线,加粗,斜体等效果
- C语言实验——圆柱体计算
- 任务调度系统-任务依赖的设计
- php-Excel-Reader读取日期有误做法
- 电机控制中一些幅值关系
- 判断是否为合法的Python标识符
- 数字反转
- echarts3 tooltip拼写