文件上传中中 Enctype=multipart/form-data 的作用

jackxiang 2010-5-4 10:48 | |
Java中:
用了enctype="multipart/form-data"  
  就不能getParmeter了因为  
  他是一个特殊的标记啊  
  只能通过特殊的方法得到需要的数值啊

你的这种方法我没试过,我是用jspSmartUpload上传的,enctype="multipart/form-data"和 request.getParameter()确实不能同时使用,但这个组件提供了替代的方法:new   SmartUpload().getRequest()返回一个Request类型对象,这个对象提供了替代的方法,有兴趣可以参考一下.

PHP:
评优系统用到了Excel表的上传:


<FORM METHOD="POST" ACTION="3231313.jsp" ENCTYPE="multipart/form-data">
<INPUT TYPE="FILE" NAME="FILE1" SIZE="50"><BR>
<input type="SUBMIT" value="上传" />
</FORM>


代码解释:

ENCTYPE="multipart/form-data"用于表单里有图片上传。
表单中enctype="multipart/form-data"的意思,是设置表单的MIME编码。默认情况,这个编码格式是application /x-www-form-urlencoded,不能用于文件上传;只有使用了multipart/form-data,才能完整的传递文件数据,进行下面的操作:
enctype="multipart/form-data"是上传二进制数据; form里面的input的值以2进制的方式传过去,所以request就得不到值了。 也就是说加了这段代码,用request就会传递不成功,取表单值加入数据库时,用到下面的:

SmartUpload su = new SmartUpload();//新建一个SmartUpload对象

su.getRequest().getParameterValues();取数组值

su.getRequest().getParameter( );取单个参数单个值


原因:
一旦在网页post中加入了ENCTYPE="multipart/form-data"就是以二进制传输,而不加入就直接传输,php会自动根据这个bondary去做二进制的解析,而Java不会,所以,我们在上传图片的时候必须加入这个form-data,图片是以二进制形式上传的,所以,我们必须加入,否则就没法传到服务端去做解析。服务端就那么编写的,就这个原因,无它。

作者:jackxiang@向东博客 专注WEB应用 构架之美 --- 构架之美,在于尽态极妍 | 应用之美,在于药到病除
地址:https://jackxiang.com/post/3026/
版权所有。转载时必须以链接形式注明作者和原始出处及本声明!

评论列表
发表评论

昵称

网址

电邮

打开HTML 打开UBB 打开表情 隐藏 记住我 [登入] [注册]