转: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
时间: 2024-10-10 06:22:29

转:ios的图片文件上传代码的相关文章

IOS开发之文件上传

IOS开发之文件上传 在移动应用开发  文件形式上传是必不可少的,最近把IOS这块文件上传文件代码简单的整理一下,如果大家有需要安卓这边的代码,本人也可以分享给大家!QQ群:74432915  欢迎大家一起探讨 首先本demo采用网上开源框架 AFNetworking  源码:http://download.csdn.net/detail/wangliang198901/7809439 将整个框架导入IOS新建立的工程中 在FKAppDelegate.h声明 如下: #import <UIKit

.Net Core 图片文件上传下载

当下.Net Core项目可是如雨后春笋一般发展起来,作为.Net大军中的一员,我热忱地拥抱了.Net Core并且积极使用其进行业务的开发,我们先介绍下.Net Core项目下实现文件上传下载接口. 一.开发环境 毋庸置疑,宇宙第一IDE VisualStudio 2017 二.项目结构 FilesController 文件上传下载控制器 PictureController 图片上传下载控制器 Return_Helper_DG 返回值帮助类 三.关键代码 1.首先我们来看Startup.cs

用Fine Uploader+ASP.NET MVC实现ajax文件上传[代码示例]

Fine Uploader(http://fineuploader.com/)是一个实现 ajax 上传文件的 Javascript 组件. This project attempts to achieve a user-friendly file-uploading experience over the web. It's built as a Javascript plugin for developers looking to incorporate file-uploading int

js的FileReader实现图片文件上传、预览

js的FileReader实现图片文件上传.预览 FileReader对象的readAsDataURL方法可以将读取到的文件编码成Data URL.Data URL是一项特殊的技术,可以将资料(例如图片)内嵌在网页之中,不用放到外部文件.使用Data URL的好处是,您不需要额外再发出一个HTTP 请求到服务器端取得额外的资料:而缺点便是,网页的大小可能会变大.它适合应用在内嵌小图片,不建议将大图像文件编码成Data URL来使用.您的图像文件不能够超过浏览器限定的大小,否则无法读取图像文件.1

SpringMvc MultipartFile 图片文件上传

spring-servlet.xml 1 <!-- SpringMVC上传文件时,需要配置MultipartResolver处理器 --> 2 <bean id="multipartResolver" 3 class="org.springframework.web.multipart.commons.CommonsMultipartResolver"> 4 <property name="defaultEncoding&qu

Android图片文件上传实例

原文:Android图片文件上传实例 源代码下载地址:http://www.zuidaima.com/share/1550463718132736.htm 支持拍照图片上传和从手机相册中获取图片上传到服务器端的功能 源码截图

js实现图片文件上传的心得

今天研究一下图片上存的一个实现方法,由于上周没写技术周记,这次一定要写好! 那么问题来了:PHP处理图片上传时要求JQ实现数据的交互,怎么办? 这里涉及到的一个logo上传的需求,根据radio选择是否更新logo,同时form表单将以js事件处理 <div class="comLogo sbox"> <div class="CLheader">公司logo:</div> <div class="ui-imgsel

利用Selenium实现图片文件上传的两种方式介绍

在实现UI自动化测试过程中,有一类需求是实现图片上传,这种需求根据开发的实现方式,UI的实现方式也会不同. 一.直接利用Selenium实现 这种方式是最简单的一种实现方式,但是依赖于开发的实现. 当开发直接使用file类型的input实现图片文件的上传时,实例:<input type="file" name=''filename"> 我们可以直接利用Selenium提供的方法实现文件上传,但是因为依赖开发的实现,而且目前实现基本都会利用框架,所以这种实现方式有很

实现Magento多文件上传代码功能开发

在Magento中上传单个文件很简单,可以直接在继承的Mage_Adminhtml_Block_Widget_Form类中直接添加如下组件Field: 对于图片: $fieldset->addField('test_pic', 'image', array( 'label' => "标签", 'name' => 'test_pic', )); 对于文件: $fieldset->addField('test_file', 'file', array( 'label