前言:
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)相关推荐

  1. ios 上传图片失败 小程序_iOS上传图片,就是有这种不一样的操作!

    很久没发文了,最近这段时间在看前端的东西,在忙微商城webapp的事,用的vue2.0开发,打算过段时间记录总结那方面的一些知识点和坑.下面进入今天的主题. 说到iOS上传图片,网上的资料满满皆是,分 ...

  2. 后台:七牛云上传图片,视频,文件

    vue方式 上传图片(通过base64进行上传图片) <div id="myDiv"></div><script>let base64 = 'i ...

  3. Vue中使用wangEditor实现自定义上传图片和视频

    之前没用过wangEditor真是一脸懵,做自己没做过的东西总是心里没谱,既然项目已经结束了那来总结一下吧 看着官网的demo发现简单了好多 官网地址:快速开始 | wangEditor 这里可以选自 ...

  4. 七牛云上传图片和视频

    先说本文主要的重点: 七牛云上传图片(包括从相机获取的和从相册获取的)    七牛云上传视频       8.0手机调起相机        都会进行描述    多图片和多视频上传    获取图片后缀 ...

  5. 图片/视频url 转 File Blob

    图片转Base64 由于 onload 方法是异步的 便于取值, 用 Promise 封装一下 function urlToBase64(url) {return new Promise((resol ...

  6. iOS上传视频到服务器

    iOS上传视频到服务器 这里介绍用AFN上传本地拍摄的视频到服务端 //视频转换为MP4//转码操作..._hud.mode = MBProgressHUDModeIndeterminate;_hud ...

  7. 将图片(路径)转换为Base64 和 将base64转换为file类型

    var image={/* 将图片(路径)转换为Base64 */getBase64FromImageURL(url, callback) {var canvas = document.createE ...

  8. Android IOS WebRTC 音视频开发总结(三八)-- tx help

    Android IOS WebRTC 音视频开发总结(三八)-- tx help 本文主要介绍帮一个程序员解决webrtc疑问的过程,文章来自博客园RTC.Blacker,支持原创,转载请说明出处(w ...

  9. IOS上传图片旋转90度问题出现原因及解决方案

    IOS上传图片旋转90度问题出现原因及解决方案 参考文章: (1)IOS上传图片旋转90度问题出现原因及解决方案 (2)https://www.cnblogs.com/justdoityangbo/p ...

最新文章

  1. python【蓝桥杯vip练习题库】 ADV-364 天天向上(DP)
  2. 十五天精通WCF——第十四天 一起聊聊FaultException
  3. 阿里巴巴2021秋招笔试题20211119
  4. 如何在 ASP.NET MVC 中集成 AngularJS(3)
  5. 使用JPA和Hibernate有效删除数据
  6. 在Win7虚拟机下搭建Hadoop2.6.0伪分布式环境
  7. windows运行xcopy计划任务 结果是0x4解决方案
  8. MySQL查询缓存设置提高MySQL查询性能
  9. 布局文件是如何被解析的?
  10. 《别闹了,费曼先生》听书笔记
  11. USB总线-USB协议简介(一)
  12. Profibus DP新总结
  13. 高端android手机,7月Android中高端手机性能榜出炉:华为高端落榜,中端没进前三!...
  14. ArrayList,LinkedList,Vector三者的异同
  15. 幼儿园案例经验迁移_浅谈在幼儿园数学教学中如何为迁移而教
  16. 源译识 | 征集开源许可证中文译文,欢迎大家译起来!
  17. Java基础 DAY11
  18. 隔行的BT.656标准信号
  19. 如何把pdf转换成excel转换器免费使用
  20. POJ4110圣诞老人的礼物

热门文章

  1. 计算机表格怎么加减乘除,如何在Word表格中进行加减乘除
  2. unity2018设置雾在哪_《Babel》项目技术整理:雾
  3. python词云图_Python生成一篇文章的词云图
  4. c语言程序设计第一课作业,C语言程序设计第一课答案.doc
  5. hash值为负_hashCode会出现负数吗,答案是肯定的
  6. python字典的键有什么要求_在Python中使用范围作为字典键,我有什么选择?
  7. 为什么我的计算机无法评分,高手看看我的电脑鲁大师怎么评分这么低啊
  8. mysql sql注入工具_基础篇——SQL注入(工具注入)
  9. eureka hostname作用_springcloud使用Eureka实现服务治理替代dubbo加zookeeper
  10. python可以处理哪些文件_4招小技巧,带你迅速提升Python文件处理的逼格