iOS多线程与网络开发之小文件上传
郝萌主倾心贡献,尊重作者的劳动成果,请勿转载。
假设文章对您有所帮助,欢迎给作者捐赠,支持郝萌主,捐赠数额任意,重在心意^_^
我要捐赠: 点击捐赠
Cocos2d-X源代码下载:点我传送
游戏官方下载:
http://dwz.cn/RwTjl
游戏视频预览:
http://dwz.cn/RzHHd
游戏开发博客:
http://dwz.cn/RzJzI
游戏源代码传送:
http://dwz.cn/Nret1



1 /** 取得本地文件的MIMEType */
2 - (void) getMIMEType {
3 // Socket 实现断点上传
4
5 //apache-tomcat-6.0.41/conf/web.xml 查找 文件的 mimeType
6 // UIImage *image = [UIImage imageNamed:@"test"];
7 // NSData *filedata = UIImagePNGRepresentation(image);
8 // [self upload:@"file" filename:@"test.png" mimeType:@"image/png" data:filedata parmas:@{@"username" : @"123"}];
9
10 // 给本地文件发送一个请求
11 NSURL *fileurl = [[NSBundle mainBundle] URLForResource:@"itcast.txt" withExtension:nil];
12 NSURLRequest *request = [NSURLRequest requestWithURL:fileurl];
13 NSURLResponse *repsonse = nil;
14 NSData *data = [NSURLConnection sendSynchronousRequest:request returningResponse:&repsonse error:nil];
15
16 // 得到mimeType
17 NSLog(@"%@", repsonse.MIMEType);
18 [self upload:@"file" filename:@"itcast.txt" mimeType:repsonse.MIMEType data:data parmas:@{@"username":@"tom", @"type":@"xml"}];
19 }



1 //
2 // ViewController.m
3 // UploadFileDemo
4 //
5 // Created by haomengzhu on 15/1/28.
6 // Copyright (c) 2015年 haomengzhu. All rights reserved.
7 //
8
9 #import "ViewController.h"
10
11 #define UTF8Encode(str) [str dataUsingEncoding:NSUTF8StringEncoding]
12
13 @interface ViewController ()
14
15 - (IBAction)upload;
16
17 @end
18
19 @implementation ViewController
20
21 - (void)viewDidLoad {
22 [super viewDidLoad];
23 // Do any additional setup after loading the view, typically from a nib.
24 }
25
26 - (void)didReceiveMemoryWarning {
27 [super didReceiveMemoryWarning];
28 // Dispose of any resources that can be recreated.
29 }
30
31 - (IBAction)upload {
32 UIImage *image = [UIImage imageNamed:@"IMG_0413"];
33 NSData *imageData = UIImagePNGRepresentation(image);
34 [self upload:@"uploadedFile" filename:@"IMG_0413.PNG" mimeType:@"image/png" data:imageData parmas:nil];
35 }
36
37 - (void)upload:(NSString *)name filename:(NSString *)filename mimeType:(NSString *)mimeType data:(NSData *)data parmas:(NSDictionary *)params
38 {
39 // 文件上传
40 NSURL *url = [NSURL URLWithString:@"http://192.168.0.21:8080/MyTestServer/upload"];
41 NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
42 request.HTTPMethod = @"POST";
43
44 // 设置请求体
45 NSMutableData *body = [NSMutableData data];
46
47 /***************文件參数***************/
48 // 參数開始的标志
49 [body appendData:UTF8Encode(@"--HelloVoidWorldBoundary\r\n")];
50 // name : 指定參数名(必须跟server端保持一致)
51 // filename : 文件名称
52 NSString *disposition = [NSString stringWithFormat:@"Content-Disposition: form-data; name=\"%@\"; filename=\"%@\"\r\n", name, filename];
53 [body appendData:UTF8Encode(disposition)];
54 NSString *type = [NSString stringWithFormat:@"Content-Type: %@\r\n", mimeType];
55 [body appendData:UTF8Encode(type)];
56
57 [body appendData:UTF8Encode(@"\r\n")];
58 [body appendData:data];
59 [body appendData:UTF8Encode(@"\r\n")];
60
61 /***************普通參数***************/
62 [params enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop) {
63 // 參数開始的标志
64 [body appendData:UTF8Encode(@"--HelloVoidWorldBoundary\r\n")];
65 NSString *disposition = [NSString stringWithFormat:@"Content-Disposition: form-data; name=\"%@\"\r\n", key];
66 [body appendData:UTF8Encode(disposition)];
67
68 [body appendData:UTF8Encode(@"\r\n")];
69 [body appendData:UTF8Encode(obj)];
70 [body appendData:UTF8Encode(@"\r\n")];
71 }];
72
73 /***************參数结束***************/
74 // HelloVoidWorldBoundary--\r\n
75 [body appendData:UTF8Encode(@"--HelloVoidWorldBoundary--\r\n")];
76 request.HTTPBody = body;
77
78 // 设置请求头
79 // 请求体的长度
80 [request setValue:[NSString stringWithFormat:@"%zd", body.length] forHTTPHeaderField:@"Content-Length"];
81 // 声明这个POST请求是个文件上传
82 [request setValue:@"multipart/form-data; boundary=HelloVoidWorldBoundary" forHTTPHeaderField:@"Content-Type"];
83
84 // 发送请求
85 [NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError) {
86 NSLog(@"開始上传~~~");
87 if (data) {
88 NSDictionary *dict = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableLeaves error:nil];
89 NSLog(@"%@", dict);
90 } else {
91 NSLog(@"上传失败");
92 }
93 }];
94 }
95
96 /** 取得本地文件的MIMEType */
97 - (void) getMIMEType {
98 // Socket 实现断点上传
99
100 //apache-tomcat-6.0.41/conf/web.xml 查找 文件的 mimeType
101 // UIImage *image = [UIImage imageNamed:@"test"];
102 // NSData *filedata = UIImagePNGRepresentation(image);
103 // [self upload:@"file" filename:@"test.png" mimeType:@"image/png" data:filedata parmas:@{@"username" : @"123"}];
104
105 // 给本地文件发送一个请求
106 NSURL *fileurl = [[NSBundle mainBundle] URLForResource:@"itcast.txt" withExtension:nil];
107 NSURLRequest *request = [NSURLRequest requestWithURL:fileurl];
108 NSURLResponse *repsonse = nil;
109 NSData *data = [NSURLConnection sendSynchronousRequest:request returningResponse:&repsonse error:nil];
110
111 // 得到mimeType
112 NSLog(@"%@", repsonse.MIMEType);
113 [self upload:@"file" filename:@"itcast.txt" mimeType:repsonse.MIMEType data:data parmas:@{@"username":@"tom", @"type":@"xml"}];
114 }
115
116
117 @end

郝萌主倾心贡献,尊重作者的劳动成果,请勿转载。
假设文章对您有所帮助,欢迎给作者捐赠。支持郝萌主。捐赠数额任意,重在心意^_^
我要捐赠: 点击捐赠
Cocos2d-X源代码下载:点我传送
游戏官方下载:
http://dwz.cn/RwTjl
游戏视频预览:
http://dwz.cn/RzHHd
游戏开发博客:
http://dwz.cn/RzJzI
游戏源代码传送:
http://dwz.cn/Nret1
iOS多线程与网络开发之小文件上传的更多相关文章
- [iOS 多线程 & 网络 - 2.5] - 小文件上传
A.文件上传 思路: 发送文件数据给服务器 使用post请求 必须手动设置请求头: 内容大小Content-Length & 内容类型 Content-Type 请求体:文件数据 文件上传的格 ...
- iOS开发之多文件上传
// // ViewController.m // B03-多文件上传 // // Created by 0426iOS on 15/7/1. // Copyright (c) 2015年 0 ...
- 阿里云 oss 小文件上传进度显示
对阿里云OSS上传小文件时的进度,想过两个方法:一是.通过多线程监測Inputstream剩余的字节数来计算,可是由于Inputstream在两个线程中共用,假设上传线程将Inputstream关闭, ...
- Web开发安全之文件上传安全
很长一段时间像我这种菜鸡搞一个网站第一时间反应就是找上传,找上传.借此机会把文件上传的安全问题总结一下. 首先看一下DVWA给出的Impossible级别的完整代码: <?php if( iss ...
- asp.net(c#)开发中的文件上传组件uploadify的使用方法(带进度条)
上文件传很常见,现在就文件上传利用HTML的File控件(uploadify)的,这里为大家介绍一下(uploadify)的一些使用方法.在目前Web开发中用的比较多的,可能uploadify(参考h ...
- python运维开发(二十一)----文件上传和验证码+session
内容目录: 文件上传 验证码+session 文件和图片的上传功能 HTML Form表单提交,实例展示 views 代码 HTML ajax提交 原生ajax提交,XMLHttpRequest方式上 ...
- iOS开发之AFNetworking实现数据传输和文件上传
//传输数据 1 AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager]; manager.r ...
- Spring boot+Vue全栈开发---Spring Boot文件上传
https://blog.csdn.net/Day_and_Night_2017/article/details/86980743 文件上传涉及到两个组件:CommonsMultipartResolv ...
- 分享一个FileUtil工具类,基本满足web开发中的文件上传,单个文件下载,多个文件下载的需求
获取该FileUtil工具类具体演示,公众号内回复fileutil20200501即可. package com.example.demo.util; import javax.servlet.htt ...
随机推荐
- Codeforces Beta Round #95 (Div. 2) C 组合数学
C. The World is a Theatre time limit per test 2 seconds memory limit per test 256 megabytes input st ...
- Origin 2018 的坐标轴中文标签发生倒立/翻转
问题: 在使用 origin 2018 作图时,坐标轴或者是标签中输入中文后,将其更换中文字体(英文字体没有该问题)后发生倒立的情况 解决: 后来发现 Origin 2018 中存在两种中文字体,其中 ...
- 移动端px转rem的两种方法
rem使用方法: rem ,root element,即相对于根元素的大小,浏览器默认字符大小为16px,此时1rem相当于16px. 方法1 设置font-size: body{font-size ...
- Mysql存储过程给变量赋值的几种方法实践
BEGIN DECLARE v_request_count INT; #申请次数 DECLARE v_plan_count INT; #安排次数 DECLARE v_learn_count INT; ...
- 【XPButton类】美化MFC button (转)
从网上找到别人写的一个XPButton类,利用XPButton类实现XP风格的按钮.百度一下即可找到这个类,接下来具体的步骤如下: 1.创建基于对话框的MFC工程假设命名为:XPButtonTest, ...
- 转 c++多线程编程
c++多线程编程 一直对多线程编程这一块很陌生,决定花一点时间整理一下. os:ubuntu 10.04 c++ 1.最基础,进程同时创建5个线程,各自调用同一个函数 #include <io ...
- 《30天学习30种新技术》-Day 15:Meteor —— 从零开始创建一个 Web 应用
目录:https://segmentfault.com/a/1190000000349384 原文: https://segmentfault.com/a/1190000000361440 到目前为止 ...
- 如何将Windows8系统的磁盘格式(GPT格式)转换成Windows 7系统的磁盘格式(MBR格式)
知识点分析:随机预装Win8的电脑,磁盘为GPT格式的,如果需要安装Win7等早期版本系统,需要转换为MBR格式的,使用Diskpart命令即可完成转换.操作步骤: 注意:转换磁盘格式需要清空磁盘中的 ...
- Oracle 表分区partition(http://love-flying-snow.iteye.com/blog/573303)
http://www.jb51.net/article/44959.htm Oracle表分区分为四种:范围分区,散列分区,列表分区和复合分区. 一:范围分区 就是根据数据库表中某一字段的值的范围来划 ...
- BZOJ2748(DP)
非常简单的DP题.类似背包的操作,按照音量改变值进行状态转移即可. #include <bits/stdc++.h> using namespace std; #define REP(i, ...