iOS文件上传注意事项

文件上传注意事项(文件上传用的都是POST请求)


一、步骤:
1.创建URL
2.创建NSMutableURLRequest
3.设置HTTPMethod为POST形式
4.设置请求头Content-Type为”multipart/form-data”
5.把要上传的数据追加到HTTPBody(要注意大文件或小文件等)
6.创建一个http连接


二、数据上传步骤中需要注意第5步(把要上传的数据追加到HTTPBody)
1)如果能获取文件路径,那么可以获取文件路径,用NSData把本地数据读出来,此种方式多用于小文件上传,适用于各种类型的文件,例如:image、txt、doc、MP3、MP4、.h文件等
2)如果获得不了文件的路径,那么需要想办法转化成data,一般只会出现在和系统交互的地方(访问相册),而且大多都是用在访问相册和相机上,那么就可以使用以下两种方式来把image转化成data
a->UIImagePNGRepresentation(image);
b->UIImageJPEGRepresentation(image, 0.1);
3)对于大文件不能直接把数据读到内存中,需要用NSInputStream来处理,使用setHTTPBodyStream的方式来上传数据
4)对于指定image等数据的key值的形式来上传数据,那么直接用NSMutableURLRequest来处理比较麻烦,需要繁琐的拼接BodyData(setHTTPBody:data)的工程,建议使用一些第三方库,或者自己把繁琐的过程形成一个工具类,以便将来使用(说白了就是先写好)


三、上传数据java servlet服务器采用InputStream处理数据的形式如下
1.获得servlet的输入流
ServletInputStream in = request.getInputStream();


2.获得输入流发来的数据长度
int length = request.getContentLength();


3.根据长度创建一个字节数据
byte[] buffer = new byte[length];


4.通过for循环把输入流中得所有字节读到字节数组中
for (int i=0; i<length; i++) {
            buffer[i] = (byte) in.read();
        }


5.数据接收完毕,关闭输入流
in.close();


6.把接收到得数据用在自己想用的地方
6.1)如果是一段JSON字符串,可以解析后使用
String info = new String(buffer);
JSONObject json = new JSONObject(info);


6.2)如果想存放在本地,那么还需要以下操作
6.2.1)拼接好要存放的文件路径
String path = request.getSession().getServletContext().getRealPath("/") + "/"+name+".jpg";


6.2.2)创建文件输出流(FileOutputStream)
FileOutputStream output = new FileOutputStream(path);


6.2.3)把数据写到本地
output.write(buffer);


6.2.4)关闭文件输出流
output.close();





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值