Form-based File Upload in HTML(RFC-1867)

1.

RootViewController.m


#import "RootViewController.h"
#define URL @"http://localhost:8080/TestOne/upload3.jsp"

@implementation RootViewController

- (void)viewDidLoad
{
[super viewDidLoad];

UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect];
button.frame = CGRectMake(100, 100, 100, 50);
[button setTitle:@"发送图片" forState:0];
button.backgroundColor = [UIColor groupTableViewBackgroundColor];
[self.view addSubview:button];
[button addTarget:self action:@selector(postImageAction:) forControlEvents:7];
}

-(void)postImageAction:(UIButton *)sender
{
//分界线的标示符,用于区分每一条
NSString *TWITTERFO_FORM_BOUNDARY = @"AaB03x";

//根据url初始化request
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:
[NSURL URLWithString:URL]
cachePolicy:NSURLRequestReloadIgnoringCacheData
timeoutInterval:10];
//分界线 --AaB03x
NSString *MPboundary = [[NSString alloc] initWithFormat:@"--%@",TWITTERFO_FORM_BOUNDARY];
//结束符AaB03x--
NSString *endMPboundary = [[NSString alloc]initWithFormat:@"%@--",MPboundary];
//字典存多少张图片
NSDictionary *params = [NSDictionary dictionaryWithObjectsAndKeys:[UIImage imageNamed:@"163.png"],@"File1",@"huen",@"user",nil];
//要上传图片
UIImage *image = [params objectForKey:@"File1"];
NSData *data = UIImagePNGRepresentation(image);
//http body 的字符串
NSMutableString *body = [[NSMutableString alloc]init];
//参数的所有key的
NSArray *keys = [params allKeys];
for (int i = 0; i < [params count]; i++)
{
//得到当前key
NSString *key = [keys objectAtIndex:i];
//如果key不是图片类型
if (![key isEqualToString:@"File1"])
{
//添加分界线,换行
[body appendFormat:@"%@\r\n",MPboundary];
//添加字段名称,换2行
[body appendFormat:@"Content-Disposition:form-data;name=\"%@\"\r\n\r\n",key];
//添加字段的值
[body appendFormat:@"%@\r\n",[params objectForKey:key]];
}
}
///////////////////////////////传图////////////////////////////////////////////////
//添加分界线换行
[body appendFormat:@"%@\r\n",MPboundary];
//给据heml控件neme的值声明File1字段,文件名为163.png
[body appendFormat:@"Content-Disposition:form-data;name=\"File1\";filename=\"163.png\"\r\n"];
//声明上传文件的格式
[body appendFormat:@"Content-Type:image/png\r\n\r\n"];
//声明结束符
NSString *end = [[NSString alloc]initWithFormat:@"\r\n%@",endMPboundary];
///////////////////////////////////////////////////////////////////////////////////
//声明myRequestData,用来放入http body
NSMutableData *myRequestData = [NSMutableData data];
//将body字符串转化为UTF-8
[myRequestData appendData:[body dataUsingEncoding:NSUTF8StringEncoding]];
//将image加入data
[myRequestData appendData:data];
//加入结束符--AaB03x--
[myRequestData appendData:[end dataUsingEncoding:NSUTF8StringEncoding]];
///////////////////////////////设置Content////////////////////////////////////////
//设置httpHeader中Content-Type的值
NSString *content = [[NSString alloc]initWithFormat:@"multipart/form-data;boundary=%@",TWITTERFO_FORM_BOUNDARY];
//设置HttpHeader
[request setValue:content forHTTPHeaderField:@"Content-Type"];
//设置Content-Length
[request setValue:[NSString stringWithFormat:@"%d",[myRequestData length]] forHTTPHeaderField:@"Content-Length"];
//设置Http body
[request setHTTPBody:myRequestData];
//http Method
[request setHTTPMethod:@"POST"];

NSError * err;
NSHTTPURLResponse * response;
NSData *urlData = [NSURLConnection sendSynchronousRequest:request
returningResponse:&response
error:&err];

NSString * responseStr = [[NSString alloc] initWithData:urlData
encoding:NSUTF8StringEncoding];
NSLog(@"responseStr = %@",responseStr);
// 打印回应和错误信息
NSLog(@"response = %@",[NSHTTPURLResponse localizedStringForStatusCode:[response statusCode]]);
}

@end

.

Form-based File Upload in HTML(RFC-1867),码迷,mamicode.com

时间: 2024-10-18 07:07:24

Form-based File Upload in HTML(RFC-1867)的相关文章

如何在Form中使用键弹性域(Key Flexfield)

在应用弹性域之前必须先定义弹性域,定义之前必须先注册表列.如果你的弹性域已经在Oracle Application Object Library中已经定义和注册了,并且弹性域表和列已经在数据库中存在,则忽略1.2.3步骤,适用于关键性也适用于描述性弹性域. 1.建立相关的数据库表结构.注册表列 关键弹性域COMBINATIONS表必须包括这几个部分:(1)唯一的ID列(2)KEY段,SEGMENT1.SEGMENT2...SEGMENTn(3)ENABLED_FLAG和SUMMARY_FLAG列

如何在Form中使用描述性弹性域(Descriptive Flexfield)

弹性域包括键弹性域和描述性弹性域,其开发方法和用途均不一样,在此主要介绍描述性弹性域在Form中的开发方法. 描述性弹性域的开发步骤主要包括: 1.创建表,表中包括弹性域结构列和弹性域列2.创建视图,视图中包括弹性域相关列(非必需)3.使用AD_DD工具包注册表和表列4.在Oracle EBS系统中注册描述性弹性域5.启用描述性弹性域6.按照一般Form开发的步骤,创建相关对象 1).在块中创建一个DF非数据库项,并设置属性 2).给DF项和数据块添加必要的触发器和标准代码 3).在PRE-FO

Internet 网络层协议设计原则(RFC 1958)

这 10 条原则本是设计网络层协议用的,但我想它们可能对 web 应用的设计同样具有指导意义,因此记录于下(顺序为从最重要到最不重要): 保证工作.直到确认原型系统可以正常运行,才可以完成设计或确定标准. 保持简单.有疑问时应该使用最简单的解决方案.即如果一项特性并非绝对必要,就应该被砍掉,尤其当可以通过其他简单特性的组合也可以达到相同效果的时候.(注:也许这里的难点在于确认一套最小功能集) 明确选择.解决一个问题应当有且只有一种解决方案,这与 Python 的理念相同. 模块开发.使用栈结构组

HTML一个form表单中有两个(多个)submit,后台如何区分(纯HTML实现,无需javascript)

一个表单中有时可能会有多个Submit元素,如何在后台区分哪个按钮被点击呢? 网上很多人说用javascript,写一个长长的函数,点击不同的按钮提交不同的数据:还有的说用多个表单:其实完全不需要这么麻烦. 两种方法可以实现,不需要使用javascript. 方法一.使用不同的name属性 <form method="post"> <input type="submit" name="save" value="保存设置

关于Form、ModelForm的一些操作(持续更新)

1.前端循环:后端传到前端的form是可以循环的,以此获得想要展示的元素 <form method="post" class="form-horizontal" novalidate> {% csrf_token %} {% for field in form %} <div class="col-sm-6"> <div class="form-group"> <label for=&

jQuery File Upload 单页面多实例的实现

jQuery File Upload 的 GitHub 地址:https://github.com/blueimp/jQuery-File-Upload 插件描述:jQuery File Upload 是一个 jQuery 图片上传组件,支持多文件上传.取消.删除,上传前缩略图预览.列表显示图片大小,支持上传进度条显示.插件基于开放的标准,如 HTML5 和 JavaScript ,不需要额外的浏览器插件(例如使用Adobe 的 Flash ),在旧版浏览器中使用 XMLHttpRequest

thinkphp5 csv格式导入导出(多数据处理)

关于csv文件格式的导出导入个人见解 先上代码: <?php namespace think; class Csv { /** * 导出csv文件 * @param $list 数据源 * @param $title 数据列表 */ public function put_csv($list,$title) { $file_name = "exam".time().".csv";//文件名 header('Content-Type: application/v

JavaWeb学习之转发和重定向、会话技术:cookie、session、验证码实例、URLConnection使用(下载网页)(4)

1.转发和重定向 HttpServletResponse response 转发: RequestDispatcher dispatcher = request.getRequestDispatcher("/secondServlet"); request.setAttribute("pwd","123");//这里设置的值在secondServlet中可以获取到 dispatcher.forward(request, response);//调

Http authentication(BASIC, DIGEST)

Http authentication....BASIC: In the context of an HTTP transaction, basic access authentication is a method for a web browser or other client program to provide a user name and password when making a request.[1] Before transmission, the user name is