转:ios的图片文件上传代码
转自: https://gist.github.com/igaiga/1354221
| @interface ImageUploader : NSObject { |
| NSData *theImage; |
| } |
| @property (retain) NSData *theImage; |
| - (void) syncUpload:(NSData *) uploadImage; |
| @end |
| #import "ImageUploader.h" |
| #define NOTIFY_AND_LEAVE(X) {[self cleanup:X]; return;} |
| #define DATA(X) [X dataUsingEncoding:NSUTF8StringEncoding] |
| // Posting constants |
| #define IMAGE_CONTENT @"Content-Disposition: form-data; name=\"%@\"; filename=\"image.jpg\"\r\nContent-Type: image/jpeg\r\n\r\n" |
| #define BOUNDARY @"------------0x0x0x0x0x0x0x0x" |
| @implementation ImageUploader |
| @synthesize theImage; |
| - (void) syncUpload:(NSData *) uploadImage |
| { |
| self.theImage = uploadImage; |
| [self main]; |
| } |
| - (void) cleanup: (NSString *) output |
| { |
| self.theImage = nil; |
| // NSLog(@"******** %@", output); |
| } |
| - (NSData*)generateFormDataFromPostDictionary:(NSDictionary*)dict |
| { |
| id boundary = BOUNDARY; |
| NSArray* keys = [dict allKeys]; |
| NSMutableData* result = [NSMutableData data]; |
| for (int i = 0; i < [keys count]; i++) |
| { |
| id value = [dict valueForKey: [keys objectAtIndex:i]]; |
| [result appendData:[[NSString stringWithFormat:@"--%@\r\n", boundary] dataUsingEncoding:NSUTF8StringEncoding]]; |
| if ([value isKindOfClass:[NSData class]]) |
| { |
| // handle image data |
| NSString *formstring = [NSString stringWithFormat:IMAGE_CONTENT, [keys objectAtIndex:i]]; |
| [result appendData: DATA(formstring)]; |
| [result appendData:value]; |
| } |
| NSString *formstring = @"\r\n"; |
| [result appendData:DATA(formstring)]; |
| } |
| NSString *formstring =[NSString stringWithFormat:@"--%@--\r\n", boundary]; |
| [result appendData:DATA(formstring)]; |
| return result; |
| } |
| // NSOperationQueueによる非同期化を見据えてmainにしています。 |
| - (void) main |
| { |
| if (!self.theImage) { |
| NOTIFY_AND_LEAVE(@"Please set image before uploading."); |
| } |
| NSString* MultiPartContentType = [NSString stringWithFormat:@"multipart/form-data; boundary=%@", BOUNDARY]; |
| NSMutableDictionary* post_dict = [[NSMutableDictionary alloc] init]; |
| [post_dict setObject:@"testimage" forKey:@"filename"]; |
| [post_dict setObject:self.theImage forKey:@"data[User][image]"]; |
| NSData *postData = [self generateFormDataFromPostDictionary:post_dict]; |
| [post_dict release]; |
| NSString *baseurl = @"https://example.com/api/upload_image"; |
| NSURL *url = [NSURL URLWithString:baseurl]; |
| NSMutableURLRequest *urlRequest = [NSMutableURLRequest requestWithURL:url]; |
| if (!urlRequest) NOTIFY_AND_LEAVE(@"Error creating the URL Request"); |
| [urlRequest setHTTPMethod: @"POST"]; |
| [urlRequest setValue:MultiPartContentType forHTTPHeaderField: @"Content-Type"]; |
| [urlRequest setHTTPBody:postData]; |
| NSError *error; |
| NSURLResponse *response; |
| NSData* result = [NSURLConnection sendSynchronousRequest:urlRequest returningResponse:&response error:&error]; |
| //NSLog(@"***** result =%@", result); |
| if (!result) |
| { |
| [self cleanup:[NSString stringWithFormat:@"upload error: %@", [error localizedDescription]]]; |
| return; |
| } |
| // Return results |
| NSString *outstring = [[[NSString alloc] initWithData:result encoding:NSUTF8StringEncoding] autorelease]; |
| NSLog(@"***** outstring =%@", outstring); |
| [self cleanup: outstring]; |
| } |
| @end |
转:ios的图片文件上传代码的更多相关文章
- PHP 图片文件上传代码
通过 PHP,可以把文件上传到服务器.里面加入一些图片的判断,如果不加判断文件的类型就可以上传任意格式的文件. 为了网站的安全,肯定不让上传php文件,如果有人进入你的后台,上传了一个php文件,你的 ...
- PHP 图片文件上传代码分享
分享下php上传图片文件的一段代码,挺不错的. 通过 PHP,可以把文件上传到服务器.加入一些图片的判断,如果不加判断文件的类型就可以上传任意格式的文件. 当然了,会禁止上传php文件,以及其它程序代 ...
- SpringMvc MultipartFile 图片文件上传
spring-servlet.xml <!-- SpringMVC上传文件时,需要配置MultipartResolver处理器 --> <bean id="multipar ...
- .Net Core 图片文件上传下载
当下.Net Core项目可是如雨后春笋一般发展起来,作为.Net大军中的一员,我热忱地拥抱了.Net Core并且积极使用其进行业务的开发,我们先介绍下.Net Core项目下实现文件上传下载接口. ...
- php文件上传代码解析
php文件上传代码解析 is_uploaded_file() //函数判断指定的文件是否是通过 HTTP POST 上传的,返回一个布尔值. $_FILES['upfile']['tmp_name' ...
- springmvc图片文件上传接口
springmvc图片文件上传 用MultipartFile文件方式传输 Controller package com.controller; import java.awt.image.Buffer ...
- servlet3.0获取参数与文件上传代码示例
转: servlet3.0获取参数与文件上传代码示例 2018年08月26日 20:25:35 苏凯勇往直前 阅读数:98 package com.igeek.servlet; import ...
- PHP代码篇(五)--如何将图片文件上传到另外一台服务上
说,我有一个需求,就是一个临时功能.由于工作开发问题,我们有一个B项目,需要有一个商品添加的功能,涉及到添加商品内容,比如商品名字,商品描述,商品库存,商品图片等.后台商品添加的接口已经写完了,但是问 ...
- iOS分享 - AFNetworking之多图片/文件上传
在分享经验之前,先说点题外话,之前的一个项目涉及到了多图片的上传,本来以为是一个很简单的事情,却着实困扰了我好久,究其原因,一是我不够细心,二是与后台人员的交流不够充分.在此,我想将我的老师常说的一句 ...
随机推荐
- ngx_lua_waf完整安装说明
测试环境:centos5.6 x32,nginx1.4.4,LuaJIT-2.0.3,ngx_devel_kit-0.2.19.lua-nginx-module-0.9.11,ngx_lua_waf ...
- (2)go 规范,变量,基本数据类型
.一.规范 main 函数为入口 严格区分大小写 不需要加分号 一行只写一条语句 定义的变量或者导入的包必须要用到,否则编译时会报错 左括号不能单独一行 逗号可以用来在换行时连接字符串 标识符由字母数 ...
- python——聊聊iterable,sequence和iterators
---------------------------------------------------------------前言----------------------------------- ...
- 计算机基础-day2
为何要有操作系统? 首先要说明一下操作系统是什么? 操作系统是协调.管理.控制计算机硬件和为应用程序提供接口的控制软件,操作系统向下连接硬件,向上承载应用程序. 由于硬件不论种类还是工作流程都是繁杂的 ...
- POJ - 1835 宇航员(模拟题)
问题描述: 宇航员在太空中迷失了方向,在他的起始位置现在建立一个虚拟xyz坐标系,称为绝对坐标系,宇航员正面的方向为x轴正方向,头顶方向为z轴正方向,则宇航员的初始状态如下图所示: 现对六个方向分别标 ...
- 初见Python<4>:字典
序列是python中的一种数据结构,映射是另一种.映射(mapping)通过名字来引用值.python内建的唯一一种映射结构是字典.字典中的值没有特殊的顺序,但都存储在一个特定的键中.键可以是数字.字 ...
- BZOJ 4031 [HEOI2015]小Z的房间(Matrix-Tree定理)
[题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=4031 [题目大意] 你突然有了一个大房子,房子里面有一些房间. 事实上,你的房子可以看 ...
- ncnn阅读 - CMakeLists.txt
CMAKE_TOOLCHAIN_FILE This variable is specified on the command line when cross-compiling with CMake. ...
- Problem B: 判断回文字符串
#include<stdio.h> #include<string.h> int huiwen(char *str) //定义回文函数 { //char ch[100]; in ...
- 138.括号序列(区间型DP)
3657 括号序列 时间限制: 1 s 空间限制: 256000 KB 题目等级 : 黄金 Gold 题解 查看运行结果 题目描述 Description 我们用以下规则定义一个合法的括号序列: ...