如何将Ios如何将文件上传到svn

你的浏览器禁用了JavaScript, 请开启后刷新浏览器获得更好的体验!
官方文档中提到了通过通过 REST API 接口上传文件的问题。这里我简单介绍一下通过REST API 接口上传图片的问题。
我们知道由于iOS无法通过html表单来上传图片,因此想要上传图片,必须实现http请求,而不能像其他语言那样通过html表单的post就能上传。这个文档中貌似没有说清楚
上传图片的http post请求的格式是这样的:
第一行是指定了http post请求的编码方式为multipart/form-data(上传文件必须用这个)。
boundary=AaB03x说明了AaB03x为分界线。比如 --AaB03x 就是一个分界线的意思
content-disposition: form- name=&field1&
Hello Boris!
这句话声明了请求中的一个字段的名称,如field1
以及字段的值,如Hello Boris!
这里类似form表单中的&input name=&field1& type=&text& value=&Hello Boris!&/&
中间的空行是必须的。一般是文件的一些属性
不同的字段之间用分界线分开,分界线需要单独一行,如 --AaB03x--
分界线的下一行,是下一个字段
content-disposition: form- name=&pic&; filename=&boris.png&
Content-Type: image/png
... contents of boris.png ...
--AaB03x--
这里声明了变量pic,也就是我们要传的文件,上传文件的时候需要在后边指定filename:filename=&boris.png&
并且需要在下一行指定文件的格式:Content-Type: image/png
... contents of boris.png ...
这里是boris.png的二进制内容(也就是data类型),如 &d0a1a0a 000b4
b2af91 2c dd79b724 6bc888c88 8c9c8733 55ddb1d5 6a0db486
在http post请求的结尾,需要有一个分界线,但是是前后都有--的:--AaB03x--
以上的这些格式,是http的规范,每个空行,空格都是必须的。
下边是iOS的实现代码
/*---------------------------------上传图片-------------------------------------------*/
//分界线的标识符
NSString *TWITTERFON_FORM_BOUNDARY = @&AaB03x&;
//上传的接口
NSURL *url = [NSURL URLWithString:@&环信ID/APP名字/chatfiles&];
//要上传的图片,得到data
NSData *data = UIImagePNGRepresentation([UIImage imageNamed:@&defain&]);//这是我的本地图片
//声明file字段,文件名为defain.png, 声明上传文件的格式
NSString* strBodyBegin = [NSString stringWithFormat:@&--%@\nContent-Disposition: form- name=\&%@\&; filename=\&%@\&\nContent-Type: %@\n\n&, TWITTERFON_FORM_BOUNDARY, @&file&,
@&defain.png&, @&image/png&];
//声明结束符:--AaB03x--
NSString* strBodyEnd = [NSString stringWithFormat:@&\n--%@--&,TWITTERFON_FORM_BOUNDARY];
NSMutableData *httpBody = [NSMutableData data];
//表单开始
[httpBody appendData:[strBodyBegin dataUsingEncoding:NSUTF8StringEncoding]];
//填入数据
[httpBody appendData:data];
//表单结束
[httpBody appendData:[strBodyEnd dataUsingEncoding:NSUTF8StringEncoding]];
注意:这里我没有用下面的字段(它主要用来描述text格式的文本信息)
content-disposition: form- name=&field1&
Hello Boris!
NSMutableURLRequest* httpPutRequest = [[NSMutableURLRequest alloc] init];
[httpPutRequest setURL:url];
//设置请求方法
[httpPutRequest setHTTPMethod:@&POST&];
[httpPutRequest setTimeoutInterval: 60000];
//设置HTTPHeader中token的值
[httpPutRequest setValue:@&Bearer **************************************************& forHTTPHeaderField:@&Authorization&];
//设置访问权限
[httpPutRequest setValue:@&true& forHTTPHeaderField:@&restrict-access&];
//设置Content-Length
[httpPutRequest setValue:[NSString stringWithFormat:@&%@&, @(httpBody.length)] forHTTPHeaderField:@&Content-Length&];
//设置HTTPHeader中Content-Type的值
[httpPutRequest setValue:[NSString stringWithFormat:@&multipart/form- boundary=%@&,TWITTERFON_FORM_BOUNDARY] forHTTPHeaderField:@&Content-Type&];
//将表单添加到请求体
httpPutRequest.HTTPBody = httpB
//异步请求
[NSURLConnection sendAsynchronousRequest:httpPutRequest queue:[[NSOperationQueue alloc] init] completionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError) {
if (connectionError == nil) {
id obj = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:nil];
NSLog(@&服务器返回信息%@&,obj);
//服务器返回信息
14:30:20.272 Fuhome-App[] 服务器返回信息{
application = &************&;
applicationName = **********;
duration = 81;
entities =
&share-secret& = &*********&;
uuid = &***********&;
organization = ******;
path = &/chatfiles&;
timestamp = 5;
uri = &******/*******/chatfiles&;
文章写的很赞,思路清晰,分析的很到位,经验证方法是可行的。
但把token写在客户端得考虑到风险问题,如果别人通过恶意调试http请求拿到token就可以做rest接口全部操作了。
已经赞赏了,快去提现看看。
要回复文章请先或
90后iOS开发者
知识价值的认可,源自您的赞赏
扫描二维码,你的支付将由imGeek代收后转给对方
感谢您的赞赏
一个开放、互助、协作、创意的社区
一个开放、互助、协作、创意的社区
京ICP备号-3(风中行走)
(kindle008)
(子夜书影)
(niubi01010)
(小白菜儿)
第三方登录:怎样把电脑里的文件传到ios里_百度知道
怎样把电脑里的文件传到ios里
我有更好的答案
不管越狱不越狱,iOS是按照应用软件来管理文件的。 所以为了pdf文件的正常使用,请首先安装能读pdf文档的工具,比如pdf reader、iBook,然后通过iTunes上传到指定应用。
采纳率:79%
为您推荐:
其他类似问题
ios的相关知识
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。如何从您的iDevice将文件传输到PC Syncios
的iPad,iPod,iPhone到PC通常,我们会与iTunes同步,我们的iDevice管理视频,音乐,相机胶卷,播放列表,在大多数的时候,它做了了不起的工作。但是,当涉及到文件传输到PC,你可能会突然卡住,如iTunes不包括这样的功能。是的,现在有icloud的,但你需要面对的问题,比如你需要升级到iOS 5或更高版本,支付超过5G的空间,不能享受服务离线,其实,它是很多更容易传输文件从您的iDevice PC的Syncios。
步骤1.下载并安装Syncios,在您的PC上。 2.通过USB电缆与计算机连接您的iDevice(的iPod / iPod的触摸/ iPhone / iPad的)。 3.一段时间后,你会看到一个简单的接口,所有的IOS文件,包括图片,音乐,应用程序,播放列表,和更多。 4.选择你想从iOS导出到电脑中的媒体文件。 (5)/点击“导出”按钮,在顶部的Syncios。 6.选择您要的文件导出并保存的文件夹或目录。 7,/现在,你会看到所有选定的文件将在您的电脑硬盘驱动器。主题 : 【新人】如何上传选择本地文件?
级别: 新手上路
可可豆: 110 CB
威望: 110 点
在线时间: 34(时)
发自: Web Page
【新人】如何上传选择本地文件?&&&
这个肯定都有的
网上找了也是不全的
我只实现了上传图片
上传文件和视频不知道怎么搞
级别: 天使
UID: 38060
发帖: 137580
可可豆: 1373716 CB
威望: 1374133 点
在线时间: 2216(时)
发自: Web Page
1、上传图片和文件视频都是一样的,都要转成NSData。
2、上传图片和文件或者视频,文件类型(content type)是不一样的,比如jpg格式的图片是image/jpeg。更多类型你搜索一下MIME,这个是MIME的百度百科&http://baike.baidu.com/view/160611.htm
级别: 新手上路
可可豆: 110 CB
威望: 110 点
在线时间: 34(时)
发自: Web Page
没看懂。。。
级别: 骑士
UID: 515338
可可豆: 894 CB
威望: 787 点
在线时间: 650(时)
发自: Web Page
我也是要实现上传文件的功能,请问你解决了么
级别: 圣骑士
可可豆: 686 CB
威望: 686 点
在线时间: 675(时)
发自: Web Page
post请求上传?
级别: 新手上路
可可豆: 7 CB
威望: 7 点
在线时间: 255(时)
发自: Web Page
回 楼主(除美灭日平韩) 的帖子
楼主实现了没,我现在也想实现这种功能
关注本帖(如果有新回复会站内信通知您)
发帖、回帖都会得到可观的积分奖励。
按"Ctrl+Enter"直接提交
关注CocoaChina
关注微信 每日推荐
扫一扫 关注CVP公众号
扫一扫 浏览移动版}

我要回帖

更多关于 如何将文件上传到微信 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信