转: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之多图片/文件上传
在分享经验之前,先说点题外话,之前的一个项目涉及到了多图片的上传,本来以为是一个很简单的事情,却着实困扰了我好久,究其原因,一是我不够细心,二是与后台人员的交流不够充分.在此,我想将我的老师常说的一句 ...
随机推荐
- websocket小荔枝
关于websocket原理和好处请参考百度,这里只是代码. var ws = new WebSocket('ws://echo.websocket.org/'); ws.onopen = functi ...
- 六十三 、异步IO
在IO编程一节中,我们已经知道,CPU的速度远远快于磁盘.网络等IO.在一个线程中,CPU执行代码的速度极快,然而,一旦遇到IO操作,如读写文件.发送网络数据时,就需要等待IO操作完成,才能继续进行下 ...
- python 自定义过滤器
文件目录结构: 新建文件并且命名为“templatetags” , 然后复制 __init__.py文件,拷贝到templatetags文件夹里, __pycache__文件夹可以忽略哈,那是程序运行 ...
- 从零开始做SSH项目(二)
使用hibernate测试加载数据.删除数据和修改数据等功能时,针对的是与数据库表user对应的User. 为了简化对其他数据表对应的实体类的持久化操作,可以在项目中创建一个BaseHibernate ...
- POJ 1860 Currency Exchange【SPFA判环】
Several currency exchange points are working in our city. Let us suppose that each point specializes ...
- 洛谷——P1927 防护伞
P1927 防护伞 题目描述 据说 2012 的灾难和太阳黑子的爆发有关.于是地球防卫小队决定制造一个特殊防护 伞,挡住太阳黑子爆发的区域,减少其对地球的影响.由于太阳相对于地球来说实在是太 大了,我 ...
- Codeforces 850B
题意: 给出一个序列,两种操作: 1.删除一个数,代价为x 2.给一个数+1,代价为y 求最小代价,使这个序列不为空,且所有的数的gcd>1 n<=5e5,a[i]<=1e6 其实思 ...
- 【线段树】Mayor's posters
[poj2528]Mayor's posters Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 66154 Accept ...
- BZOJ 2654 tree(二分答案+并查集)
[题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=2654 [题目大意] 给你一个无向带权连通图,每条边是黑色或白色. 让你求一棵最小权的恰 ...
- 实验四 Android程序设计-5
点击button按钮,进入下一活动,"the third activity"