iOS上传图片和视频(base64和file)
前言:
iOS开发中经常会使用到图片和视频上传及保存到相册,下面我讲介绍视频图片的两种上传服务器的方法。以阿里云的OSS服务器为例。
友情提示:
上传图片方法在APP中使用很广泛,最好单独写一个图片上传的类,这样就很方便了。
base64上传图片:
NSString *strType = [GXToolClass getBase64Str:image];
NSMutableDictionary *dic = [NSMutableDictionary dictionaryWithCapacity:1];
[dic setValue:strType forKey:@"base64"];
AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
[manager POST:[BASE_HOST stringByAppendingString:Http_Global_OneImage] parameters:dic progress:^(NSProgress * _Nonnull uploadProgress) {
} success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) {
if ([responseObject[GetCode] intValue] == 0) {
NSDictionary *dic = responseObject[GetData];
NSString *file = dic[@"file"];
if (self.block) {
self.block(file);
}
}else{
[[AppDelegate getApp] showAlert:responseObject[GetNewMess] type:AlertViewType_Toast];
if (self.otherBlock) {
self.otherBlock(responseObject[GetNewMess]);
}
}
} failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
if (self.failBlock) {
[[AppDelegate getApp] showAlert:@"上传失败请稍后重试" type:AlertViewType_Toast];
self.failBlock(@"上传失败请稍后重试");
}
}];
+(NSString *)getBase64Str:(UIImage *)ima //图片转成base64的 方法
{
NSData *data = UIImageJPEGRepresentation(ima, 0.3);
NSString *imageStyle = [self getImageStyle:data];
NSString *str = [data base64EncodedStringWithOptions:NSDataBase64Encoding64CharacterLineLength];
str = [NSString stringWithFormat:@"data:image/%@;base64,%@", imageStyle, str];
return str;
}
file视频上传:
AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
manager.requestSerializer = [self getHttpHeader];
// manager.responseSerializer.acceptableContentTypes = nil;
manager.responseSerializer.acceptableContentTypes = [NSSet setWithObjects:@"application/json", @"text/json", @"text/javascript",@"text/html", nil];
[self beginLoading:@"上传中" view:self.view];
[manager POST:[BASE_HOST stringByAppendingString:Http_Main_VideoUpLoad] parameters:dic constructingBodyWithBlock:^(id<AFMultipartFormData> _Nonnull formData) {
NSString *strimageStyle = [GXToolClass getImageStyle:dataIma];
[formData appendPartWithFileData:data1 name:@"file" fileName:_outputPath mimeType:@"mov"];
[formData appendPartWithFileData:dataIma name:@"thumb" fileName:[NSString stringWithFormat:@"file.%@", strimageStyle] mimeType:strimageStyle];
} progress:^(NSProgress * _Nonnull uploadProgress) {
} success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) {
[self stopLoading];
if ([responseObject[GetCode] intValue] == 0) {
[self.navigationController popViewControllerAnimated:YES];
}
[self showAlert:responseObject[GetMessage] type:AlertViewType_Toast];
} failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
[self stopLoading];
[self showAlert:@"上传失败请稍后重试" type:AlertViewType_Toast];
}];
+(NSString *)getImageStyle:(NSData *)data//获取图片格式
{
uint8_t c;
[data getBytes:&c length:1];
switch (c) {
case 0xFF:
return @"jpeg";
case 0x89:
return @"png";
case 0x47:
return @"gif";
case 0x49:
case 0x4D:
return @"tiff";
case 0x52:
if ([data length] < 12) {
return nil;
}
NSString *testString = [[NSString alloc] initWithData:[data subdataWithRange:NSMakeRange(0, 12)] encoding:NSASCIIStringEncoding];
if ([testString hasPrefix:@"RIFF"] && [testString hasSuffix:@"WEBP"]) {
return @"webp";
}
return nil;
}
return nil;
}
两种方法均可公用不在重复说明
转载于:https://www.cnblogs.com/yxl-151217/p/10476373.html
iOS上传图片和视频(base64和file)相关推荐
- ios 上传图片失败 小程序_iOS上传图片,就是有这种不一样的操作!
很久没发文了,最近这段时间在看前端的东西,在忙微商城webapp的事,用的vue2.0开发,打算过段时间记录总结那方面的一些知识点和坑.下面进入今天的主题. 说到iOS上传图片,网上的资料满满皆是,分 ...
- 后台:七牛云上传图片,视频,文件
vue方式 上传图片(通过base64进行上传图片) <div id="myDiv"></div><script>let base64 = 'i ...
- Vue中使用wangEditor实现自定义上传图片和视频
之前没用过wangEditor真是一脸懵,做自己没做过的东西总是心里没谱,既然项目已经结束了那来总结一下吧 看着官网的demo发现简单了好多 官网地址:快速开始 | wangEditor 这里可以选自 ...
- 七牛云上传图片和视频
先说本文主要的重点: 七牛云上传图片(包括从相机获取的和从相册获取的) 七牛云上传视频 8.0手机调起相机 都会进行描述 多图片和多视频上传 获取图片后缀 ...
- 图片/视频url 转 File Blob
图片转Base64 由于 onload 方法是异步的 便于取值, 用 Promise 封装一下 function urlToBase64(url) {return new Promise((resol ...
- iOS上传视频到服务器
iOS上传视频到服务器 这里介绍用AFN上传本地拍摄的视频到服务端 //视频转换为MP4//转码操作..._hud.mode = MBProgressHUDModeIndeterminate;_hud ...
- 将图片(路径)转换为Base64 和 将base64转换为file类型
var image={/* 将图片(路径)转换为Base64 */getBase64FromImageURL(url, callback) {var canvas = document.createE ...
- Android IOS WebRTC 音视频开发总结(三八)-- tx help
Android IOS WebRTC 音视频开发总结(三八)-- tx help 本文主要介绍帮一个程序员解决webrtc疑问的过程,文章来自博客园RTC.Blacker,支持原创,转载请说明出处(w ...
- IOS上传图片旋转90度问题出现原因及解决方案
IOS上传图片旋转90度问题出现原因及解决方案 参考文章: (1)IOS上传图片旋转90度问题出现原因及解决方案 (2)https://www.cnblogs.com/justdoityangbo/p ...
最新文章
- python【蓝桥杯vip练习题库】 ADV-364 天天向上(DP)
- 十五天精通WCF——第十四天 一起聊聊FaultException
- 阿里巴巴2021秋招笔试题20211119
- 如何在 ASP.NET MVC 中集成 AngularJS(3)
- 使用JPA和Hibernate有效删除数据
- 在Win7虚拟机下搭建Hadoop2.6.0伪分布式环境
- windows运行xcopy计划任务 结果是0x4解决方案
- MySQL查询缓存设置提高MySQL查询性能
- 布局文件是如何被解析的?
- 《别闹了,费曼先生》听书笔记
- USB总线-USB协议简介(一)
- Profibus DP新总结
- 高端android手机,7月Android中高端手机性能榜出炉:华为高端落榜,中端没进前三!...
- ArrayList,LinkedList,Vector三者的异同
- 幼儿园案例经验迁移_浅谈在幼儿园数学教学中如何为迁移而教
- 源译识 | 征集开源许可证中文译文,欢迎大家译起来!
- Java基础 DAY11
- 隔行的BT.656标准信号
- 如何把pdf转换成excel转换器免费使用
- POJ4110圣诞老人的礼物
热门文章
- 计算机表格怎么加减乘除,如何在Word表格中进行加减乘除
- unity2018设置雾在哪_《Babel》项目技术整理:雾
- python词云图_Python生成一篇文章的词云图
- c语言程序设计第一课作业,C语言程序设计第一课答案.doc
- hash值为负_hashCode会出现负数吗,答案是肯定的
- python字典的键有什么要求_在Python中使用范围作为字典键,我有什么选择?
- 为什么我的计算机无法评分,高手看看我的电脑鲁大师怎么评分这么低啊
- mysql sql注入工具_基础篇——SQL注入(工具注入)
- eureka hostname作用_springcloud使用Eureka实现服务治理替代dubbo加zookeeper
- python可以处理哪些文件_4招小技巧,带你迅速提升Python文件处理的逼格