前言:
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;

}

两种方法均可公用不在重复说明

iOS上传图片和视频(base64和file)的更多相关文章

  1. iOS AVCaptureVideoDataOutputSampleBufferDelegate 录制视频

    iOS AVCaptureVideoDataOutputSampleBufferDelegate 录制视频 应用场景: 使用AVFoundation提供的API, 我们可以从 AVCaptureVid ...

  2. IOS上传图片方法类

    IOS上传图片方法类   iPhone开发中遇到上传图片问题,找到多资料,最终封装了一个类,请大家指点,代码如下 // // RequestPostUploadHelper.h // demodes ...

  3. IOS批量截取视频截图 UIImage mp4 IOS Video

    IOS批量截取视频截图 //生成截图 NSString *path = [NSHomeDirectory() stringByAppendingString:@"/Documents&quo ...

  4. android上传图片、视频、文件,服务端使用wcf接收

    最近一直在搞android上传图片.视频.文件,服务端使用wcf接收,本文对调试中的遇到的问题进行记录. 首先android上传一些小图片是比较容易的一天下来差不多就能调试出来,但是上传一些大的文件时 ...

  5. ios上传图片显示方向错误问题

    IOS 上传图片方向显示错误问题 问题描述 在使用苹果手机上传图片的时候,发现传完的图片显示出来方向是错误的,竖着的图片会变成横着显示(少部分安卓手机也存在这个问题) 产生原因 ios 相机加入了方向 ...

  6. ios 上传视频或图片

    关于iOS如何实现视频和图片的上传, 我们先理清下思路 思路: #1. 如何获取图片? #2. 如何获取视频? #3. 如何把图片存到缓存路径中? #4. 如何把视频存到缓存路径中? #5. 如何上传 ...

  7. Android IOS WebRTC 音视频开发总结(八十五)-- 使用WebRTC广播网络摄像头视频(下)

    本文主要介绍WebRTC (我们翻译和整理的,译者:weizhenwei,校验:blacker),最早发表在[编风网] 支持原创,转载必须注明出处,欢迎关注我的微信公众号blacker(微信ID:bl ...

  8. Android IOS WebRTC 音视频开发总结(八十三)-- 使用WebRTC广播网络摄像头视频(上)

    本文主要介绍WebRTC (我们翻译和整理的,译者:weizhenwei,校验:blacker),最早发表在[编风网] 支持原创,转载必须注明出处,欢迎关注我的微信公众号blacker(微信ID:bl ...

  9. iOS音频AAC视频H264编码 推流最佳方案

    iOS音频AAC视频H264编码 推流最佳方案 项目都是个人的调研与实验,可能很多不好或者不对的地方请多包涵. 1    功能概况 *  实现音视频的数据的采集 *  实现音视频数据的编码,视频编码成 ...

随机推荐

  1. Mac OS X系统下,svn: Can't remove file Operation not permitted.解决方案

    当你的svn出现类似以下错误时,提示Operation not permitted之类的问题,说明项目下 .svn文件夹内的文件权限有问题. 一般是由于windows和mac操作系统同时操作同个svn ...

  2. sass进阶—变量运算

    /*变量操作 (两个变量之间的运算符需要用空格隔开,否则会报错.)==,!= <,>,<=,>=+,-,*,/,% */ $width1:50px;$width2:100px; ...

  3. 代码生成工具更新--快速生成Winform框架的界面项目

    在之前版本的代码生成工具Database2Sharp中,由于代码生成都是考虑Winform和Web通用的目的,因此Winform界面或者Web界面都是单独生成的,在工具中生成相应的界面后,复制到项目里 ...

  4. 咸鱼入门到放弃9--jsp中使用的JavaBean

    一.什么是JavaBean JavaBean是一个遵循特定写法的Java类,它通常具有如下特点: 这个Java类必须具有一个无参的构造函数 属性必须私有化. 私有化的属性必须通过public类型的方法 ...

  5. Python垃圾回收机制--完美讲解!

    转自: http://www.jianshu.com/p/1e375fb40506 先来个概述,第二部分的画述才是厉害的. Garbage collection(GC) 现在的高级语言如java,c# ...

  6. Python中何时使用断言

    这个问题是如何在一些场景下使用断言表达式,通常会有人误用它,所以我决定写一篇文章来说明何时使用断言,什么时候不用. 为那些还不清楚它的人,Python的assert是用来检查一个条件,如果它为真,就不 ...

  7. React(三)JSX内置表达式

    (一)JSX是什么? React 使用 JSX 来替代常规的 JavaScript. JSX 是一个看起来很像 XML 的 JavaScript 语法扩展. 我们不需要一定使用 JSX,但它有以下优点 ...

  8. 201771010118马昕璐《面向对象程序设计java》第八周学习总结

    第一部分:理论知识学习部分 1.接口 在Java程序设计语言中,接口不是类,而是对类的一组需求描述,由常量和一组抽象方法组成.Java为了克服单继承的缺点,Java使用了接口,一个类可以实现一个或多个 ...

  9. __x__(22)0907第四天__ 垂直外边距重叠

    外边距重叠, 也叫“外边距合并”,指的是,当两个外边距相遇时,它们将形成一个外边距. 合并后的外边距的高度,等于两个发生合并的外边距的高度中的较大者...在布局时,易造成混淆. 1. 上下元素 垂直外 ...

  10. STL中的二分查找

    本文转载于https://blog.csdn.net/riba2534/article/details/69240450 使用的时候注意:必须用在非递减的区间中 二分查找的原理非常简单,但写出的代码中 ...