转: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之多图片/文件上传
在分享经验之前,先说点题外话,之前的一个项目涉及到了多图片的上传,本来以为是一个很简单的事情,却着实困扰了我好久,究其原因,一是我不够细心,二是与后台人员的交流不够充分.在此,我想将我的老师常说的一句 ...
随机推荐
- OpenStack 认证服务 KeyStone部署 (四)
Keystone作用: 用户与认证:用户权限与用户行为跟踪: 服务目录:提供一个服务目录,包括所有服务项和相关Api的断点 SOA相关知识 Keystone主要两大功能用户认证和服务目录(相当于一个注 ...
- 洛谷P2783 有机化学之神偶尔会作弊
题目传送门 啦啦啦,发个文纪念一下第一道在洛谷上A的黑题,一次性就过真是无比舒服-(虽然某些大佬说这题有点水……)题目其实思路不难,Tarjan缩点+LCA,不过因为是无向边,所以在Tarjan的时候 ...
- Spring学习的切入点
spring是个顶级的框架,这话没毛病.很多人想把它征服,想去阅读它的源码,弄懂它的设计思想,从中学到精粹. 但是很多次打开后,看到庞大的体系结构,就懵逼了,不知从何入手. 我在这里总结下学习spri ...
- 图灵杯 E 简单的RMQ(UVA 11235)(RMQ)
E: 简单的RMQ 时间限制: 2 Sec 内存限制: 64 MB提交: 934 解决: 165[提交][状态][讨论版] 题目描述 给定一个数组,其中的元素满足非递减顺序.任意给定一个区间[i, ...
- Codeforces Round #448(Div.2) Editorial ABC
被B的0的情况从头卡到尾.导致没看C,心情炸裂又掉分了. A. Pizza Separation time limit per test 1 second memory limit per test ...
- bzoj 4506: [Usaco2016 Jan]Fort Moo
4506: [Usaco2016 Jan]Fort Moo Description Bessie is building a fort with her friend Elsie. Like any ...
- python3-开发进阶补充Django中的文件的上传
PS:这段时间有点不在状态,刚刚找回那个状态,那么我们继续曾经的梦想 今天我们来补充一下文件的上传的几种方式: 首先我们先补充的一个知识点: 一.请求头ContentType: ContentType ...
- springmvc poi实现报表导出
1.pom文件: <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</ ...
- fedora19/opensuse13.1 配置svn client
Date: 20140208Auth: Jin 一.install zypper install subversion yum install subversion 二.操作 1.将文件check ...
- mysql语句总结
mysql语句总结 -- 1,通过windows提供的服务管理来完成 -- services.msc -- 2,dos下的命令来完成 -- 停止 -- net stop mysql -- 启动 -- ...