使用HTML的表单form上传文件,需要考虑的几个问题
2014-08-08 13:22
1026 查看
应用系统中经常需要有文件上传功能,一般的做法都是使用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
/article/1400054.html
很好的讲解了实现细节。如果了些报文细节,我们就可以使用HttpClient等开源组件,自行构建请求报文,实现文件上传。我们知道http请求是无状态的,连接保持时间不能太长。因此如何实现高效、健壮的文件上传,需要考虑很多细节,需要了解http协议的一些头部如ContentType,keep alive等机制。
实现了基本的上传功能后,一般还需要考虑大文件如何上传?如何实现断点上传?如何实现异步上传?多文件一起上传?等等。
我们知道,提交一个form的时候,可以同时上传文件和提交参数值。这就引出了一个问题:请求参数值和文件内容都是在post请求体中的,服务器必须要能识别报文中,哪些是参数值,哪些是文件内容?http协议是怎么解决这个问题的呢?可以查看rfc1867文档:Form-based
File Upload in HTML。还有下面的2篇博客
http://www.cnblogs.com/chy710/archive/2010/02/22/1671007.html
/article/1400054.html
很好的讲解了实现细节。如果了些报文细节,我们就可以使用HttpClient等开源组件,自行构建请求报文,实现文件上传。我们知道http请求是无状态的,连接保持时间不能太长。因此如何实现高效、健壮的文件上传,需要考虑很多细节,需要了解http协议的一些头部如ContentType,keep alive等机制。
实现了基本的上传功能后,一般还需要考虑大文件如何上传?如何实现断点上传?如何实现异步上传?多文件一起上传?等等。
相关文章推荐
- 使用表单上传文件的过程及需要考虑的问题
- 表单包含file上传文件提交,使用ajaxSubmint或者ajaxForm 遇到的问题以及解决方法
- Java使用form表单上传文件10大需要注意事项
- html使用iframe实现伪异步表单,实现无刷新上传文件时遇到的问题
- web文件上传中需要考虑的几个问题
- 在tp3.2.3中使用 FormData 对象实现表单的文件上传功能遇到的一个问题及解决方法
- httpClient 使用multipart/form-data 类型上传文件及表单
- aspx 下使用原生html 控件上传文件的问题
- form表单上传文件使用multipart请求处理
- 使用ajax提交form表单,包括ajax文件上传
- Java 中使用内存映射文件需要考虑的 10 个问题
- Java 中使用内存映射文件需要考虑的 10 个问题
- 【原创】AJAX上传文件,formdata表单提交问题
- 使用Form表单上传文件
- Java 中使用内存映射文件需要考虑的 10 个问题
- Java 中使用内存映射文件需要考虑的 10 个问题
- 使用jQuery.form插件实现表单异步提交+上传文件
- HTML5 form标签之解放表单验证、增加文件上传、集成拖放的使用方法
- Java 中使用内存映射文件需要考虑的 10 个问题
- 【asp】web做文件上传,需要在表单用上 <form Enctype="multipart/form-data"/>