通过POST请求向服务器上传文件源代码
来源:互联网 发布:淘宝有欧时力旗舰店吗 编辑:程序博客网 时间:2024/04/29 09:31
//// ViewController.m// 11-文件上传//// Created by xiaomage on 15/8/22.// Copyright (c) 2015年 xiaomage. All rights reserved.//#import "ViewController.h"/* 文件上传格式: - 请求头 + multipart/form-data 代表是需要上传文件 + ----WebKitFormBoundaryN2S2xc0l0oWUaYie 分隔符, 可以是任意字符串,注意前面是四个---- Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryN2S2xc0l0oWUaYie - 请求体: + 请求体中的分隔符必须比请求头中的分隔符多两个-- + 分隔符必须和请求头中的一样 分隔符 \n Content-Disposition: form-data; name="file"; filename=“videos.plist" \n Content-Type: application/octet-stream \n \n 文件数据 \n \n 分隔符 \n Content-Disposition: form-data; name=“username" \n \n 非文件数据 \n 结束符号 */// 请求头的#define XMGHeaderBoundary @"----xime"// 请求体的#define XMGBoundary [@"------xime" dataUsingEncoding:NSUTF8StringEncoding]// 结束符#define XMGEndBoundary [@"------xime--" dataUsingEncoding:NSUTF8StringEncoding]// 将字符串转换为二进制#define XMGEncode(str) [str dataUsingEncoding:NSUTF8StringEncoding]// 换行#define XMGNewLine [@"\r\n" dataUsingEncoding:NSUTF8StringEncoding]@interface ViewController ()@end@implementation ViewController- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{ // 1.创建URL NSURL *url = [NSURL URLWithString:@"http://120.34.226.186:32812/upload"]; // 2.根据URL创建NSURLRequest NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url]; // 2.2设置请求体 NSMutableData *data = [NSMutableData data]; // 2.2.1设置文件参数 [data appendData:XMGBoundary]; [data appendData:XMGNewLine]; // name : 对应服务端接收的字段类型(服务端参数的名称) // filename: 告诉服务端当前的文件的文件名称(也就是告诉服务器用什么名称保存当前上传的文件) [data appendData:[@"Content-Disposition: form-data; name=\"file\"; filename=\"videos.plist\"" dataUsingEncoding:NSUTF8StringEncoding]]; [data appendData:XMGNewLine]; [data appendData:[@"Content-Type: application/octet-stream" dataUsingEncoding:NSUTF8StringEncoding]]; [data appendData:XMGNewLine]; [data appendData:XMGNewLine]; UIImage *image = [UIImage imageNamed:@"abc"]; NSData *imageData = UIImagePNGRepresentation(image); [data appendData:imageData]; [data appendData:XMGNewLine]; [data appendData:XMGNewLine]; // 2.2.2设置非文件参数 [data appendData:XMGBoundary]; [data appendData:XMGNewLine]; // name : 对应服务端接收的字段类型(服务端参数的名称) [data appendData:[@"Content-Disposition: form-data; name=\"username\"" dataUsingEncoding:NSUTF8StringEncoding]]; [data appendData:XMGNewLine]; [data appendData:XMGNewLine]; [data appendData:[@"lnj" dataUsingEncoding:NSUTF8StringEncoding]]; [data appendData:XMGNewLine]; // 2.2.3设置结束符号 [data appendData:XMGEndBoundary];// [data appendData:XMGNewLine]; request.HTTPBody = data; // 2.1设置请求头 // 注意: 设置请求头的字典不需要: request.HTTPMethod = @"POST"; NSString *temp = [NSString stringWithFormat:@"multipart/form-data; boundary=%@", XMGHeaderBoundary]; [request setValue:temp forHTTPHeaderField:@"Content-Type"]; // 3.利用NSURLConnetion发送请求 [NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError) { NSLog(@"%@", [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]); }];}@end
0 0
- 通过POST请求向服务器上传文件源代码
- Multipart/form-data POST文件上传详解 理论 简单的HTTP POST 大家通过HTTP向服务器发送POST请求提交数据,都是通过form表单提交的,代码如下: <form me
- okhttp post请求上传服务器File文件
- 通过POST向WEB服务器发送数据/上传文件(HttpSendRequestEx、InternetWriteFile)
- 通过 HTTP POST 上传文件到服务器.
- 通过 HTTP POST 上传文件到服务器.
- 通过 HTTP POST 上传文件到服务器
- Android使用HttpURLConnection进行POST请求,向服务器上传数据
- 通过Xshell向Linux服务器上传文件
- 将一张IOS沙盒下的图片或是txt文件通过post请求上传服务器
- Java客户端通过Http发送POST请求上传文件到web服务器
- 通过HttpWebRequest分别向服务器发送GET或POST请求
- VB.net 2005 向服务器POST信息(上传文件等)
- 文件上传(通过NSURLConnection)Post方法请求体拼接
- 通过post请求上传文件(图片为例)
- 向服务器上传文件
- 将文件通过http的post方法上传到服务器
- QT 通过POST方法,上传文件到服务器
- How TCP backlog works in Linux
- swing在按钮里面添加图片和文字,文字在图片下方
- FAST特征点检测
- javascript对象
- 关于内存的面试题
- 通过POST请求向服务器上传文件源代码
- Java异常总结
- C++入门和提高书籍
- power string kmp算法
- SQL-Oracle中的函数
- NOIP2011:数的划分
- Codeforces 557C Arthur and Table 暴力水过得题。。。
- 机器学习相关资料和书籍推荐
- JQuery第三天总结