转载自:http://blog.csdn.net/a645258072/article/details/51728806

项目中,我们经常会用到上传图片的功能,而目前的上传图片分为两种(我只知道两种,哈哈哈),一种是以将图片加密转成字符串的形式,另一种是以文件流的形式进行上传。记得去年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> _NonnullformData) {

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) {

//上传成功

  } failure:^(NSURLSessionDataTask *_Nullable task, NSError * _Nonnull error) {        
        //上传失败
    }];
 
第二种方式:将image转成NSData,在进行base64加密,此处代码是借鉴朋友博客中写的,就是一个加密过程,不一定非要这么写,只要将image对象传承NSData类型,然后在进行base64加密就可以了。将此处得到的返回值NSString,作为入参传入请求地址就可以了

+ (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]];

}

使用AFNetworking进行图片上传的更多相关文章

  1. AFNetworking网络请求与图片上传工具(POST)

    AFNetworking网络请求与图片上传工具(POST) .h文件 #import <Foundation/Foundation.h> /** 成功Block */ typedef vo ...

  2. [iOS AFNetworking框架实现HTTP请求、多文件图片上传下载]

    简单的JSON的HTTP传输就不说了,看一个简单的DEMO吧. 主要明白parameters是所填参数,类型是字典型.我把这部分代码封装起来了,以便多次调用.也许写在一起更清楚点. #pragma m ...

  3. Asp.Net Mvc 使用WebUploader 多图片上传

    来博客园有一个月了,哈哈.在这里学到了很多东西.今天也来试着分享一下学到的东西.希望能和大家做朋友共同进步. 最近由于项目需要上传多张图片,对于我这只菜鸟来说,以前上传图片都是直接拖得控件啊,而且还是 ...

  4. 06.LoT.UI 前后台通用框架分解系列之——浮夸的图片上传

    LOT.UI分解系列汇总:http://www.cnblogs.com/dunitian/p/4822808.html#lotui LoT.UI开源地址如下:https://github.com/du ...

  5. JS图片上传预览插件制作(兼容到IE6)

    其实,图片预览功能非常地常见.很意外,之前遇到上传图片的时候都不需要预览,也一直没有去实现过.现在手上的项目又需要有图片预览功能,所以就动手做了一个小插件.在此分享一下思路. 一.实现图片预览的一些方 ...

  6. HTML5笔记:跨域通讯、多线程、本地存储和多图片上传技术

    最近做项目在前端我使用了很多新技术,这些技术有bootstrap.angularjs,不过最让我兴奋的还是使用了HTML5的技术,今天我想总结一些HTML5的技术,好记性不如烂笔头,写写文章可以很好的 ...

  7. 对百度的UEditor多图片上传的一些补充

    我已经写了一篇文章关于百度的UEditor提取多图片上传模块.如果还没有看过,请点击以下链接查看 http://www.cnblogs.com/luke1006/p/3719029.html 出差了两 ...

  8. 使用localResizeIMG3+WebAPI实现手机端图片上传

    前言 惯例~惯例~昨天发表的使用OWIN作为WebAPI的宿主..嗯..有很多人问..是不是缺少了什么 - - 好吧,如果你要把OWIN寄宿在其他的地方...代码如下: namespace Conso ...

  9. TinyMCE的使用(包括汉化及本地图片上传功能)

    TinyMCE我就不多介绍了,这是下载地址:https://www.tinymce.com/download/ 下载下来是英文版,要汉化也很简单.首先去网上随便下载个汉化包,然后把汉化包解压后的lan ...

随机推荐

  1. Windows Azure 的磁盘管理相关概念

    在 Windows Azure 的虚拟机中,磁盘有多种使用方式.操作系统磁盘是用来为虚拟机提供操作系统的虚拟硬盘.数据磁盘是附加到虚拟机上用来存储应用程序数据的 VHD. 根据应用程序的需要,可从多种 ...

  2. Visual Studio 2013中的新项目对话框

    在Visual Studio 2013,我们推出了添加新的项目对话框. 此对话框取代了是曾在2012年这个的对话框作品,所有ASP.NET项目(MVC,Web窗体和Web API). 这就是我们如何提 ...

  3. (原)Eclipse Tomcat配置(2014.12.27——By小赞)

    Eclipse中配置自己已经安装的Tomcat 首先为Eclipse安装Tomcat插件: 进入Tomcat插件下载页:http://www.eclipsetotale.com/tomcatPlugi ...

  4. HW5.7

    import java.util.Scanner; public class Solution { public static void main(String[] args) { Scanner i ...

  5. linux和MAC下静态库.a文件合并

    这两天开发群了讨论了一个文体,如何合并众多的.a文件. 有人给了建议,使用ar 解.a,生成.o.然后合并所有的.o文件. 我在MAC OS下尝试了一下. 正好赶上编译了ffmpeg的IOS armv ...

  6. 最短路变形 poj3615&

    问题: 牛要跨过一些障碍,希望以最小的体力跨过障碍,并且对于一条路径,只在乎其中最高的障碍. 输入N代表站点数,标记为1—N,输入M代表路径数,从站点S到E之间需要跨过高度为H的障碍. 输入T代表牛要 ...

  7. 问题-Delphi在多线程中使用其他窗体上的控件,报“尚未调用CoInitialize”解决方法

    1.uses ActiveX; 2. procedure HLCJ.Execute;begin    CoInitialize(nil);    //要使用的控件    CoUninitialize; ...

  8. C# webkit.net的简单使用

      webkit.net 0.5下载地址https://sourceforge.net/projects/webkitdotnet/files/WebKit%20.NET%200.x/0.5/WebK ...

  9. Java编程最差代码

    字符串连接误用 错误的写法:  String s = ""; for (Person p : persons) { s += ", " + p.getName( ...

  10. 解锁Dagger2使用姿势(一)

    毫无疑问,Dagger2的 上手是有门槛的,有门槛是因为它里边的概念多,用起来复杂,可是一旦你学会了Dagger2的使用,你一定会爱不释手的.与ButterKnife和AndroidAnnotatio ...