使用HTML的表单form上传文件,需要考虑的几个问题

应用系统中经常需要有文件上传功能,一般的做法都是使用HTML的<form>和<input type="file">,或者使用第三方文件上传组件,如swfupload和uploadify。我们都知道如果向服务器提交数据,一般来说都是使用POST请求,请求数据会放在请求体中,以key1=value1&key2=value2的形式。这样的报文,服务器是很容易解析的。如果是上传文件,通过httpwatch抓包工具,我们可以发现:文件的内容也是放在post请求体中的。

 

我们知道,提交一个form的时候,可以同时上传文件和提交参数值。这就引出了一个问题:请求参数值和文件内容都是在post请求体中的,服务器必须要能识别报文中,哪些是参数值,哪些是文件内容?http协议是怎么解决这个问题的呢?可以查看rfc1867文档:Form-based File Upload in HTML。还有下面的2篇博客

http://www.cnblogs.com/chy710/archive/2010/02/22/1671007.html

http://blog.csdn.net/xiaojianpitt/article/details/6856536

很好的讲解了实现细节。如果了些报文细节,我们就可以使用HttpClient等开源组件,自行构建请求报文,实现文件上传。我们知道http请求是无状态的,连接保持时间不能太长。因此如何实现高效、健壮的文件上传,需要考虑很多细节,需要了解http协议的一些头部如ContentType,keep alive等机制。

 

实现了基本的上传功能后,一般还需要考虑大文件如何上传?如何实现断点上传?如何实现异步上传?多文件一起上传?等等。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值