`
楚若之夜
  • 浏览: 125013 次
  • 性别: Icon_minigender_1
  • 来自: 大连
社区版块
存档分类
最新评论

关于FORM表单中需上传文件(ENCTYPE="multipart/form-data")且传递参数的问题

阅读更多


分析:

1.需上传文件,故在form表单中添加ENCTYPE="multipart/form-data"

2.需传递参数:学期

存在的问题:由于使用了ENCTYPE="multipart/form-data",故在下一个页面里面用request.getParameter("XX")是获取不到“学期”值的

问题处理过程:

1.一开始并不知道问题在于哪里,通过断点调试没找出原因,通过HttpAnalyzerStdV3跟踪分析,发现“学期”的值在第一个页面里是存在的,但是没post到下一个页面,下一个页面接收的值为null,反复分析排查后,才觉悟到问题出在ENCTYPE="multipart/form-data"上面

2.发现问题后,交给搜索引擎,发现网上早有人提过这样的问题了(但发现copy现象即为严重,很多人很不负责,自己没验证过就转帖了,望大哥大姐们验证一下,水贴不要乱贴 乱转),当然给出很多答案(正确与否就不想多说了)

3.小X SG一句话给了我灵感,这才意识到使用的是SmartUpload组件,故找到了对策

解决方法:由于是使用SmartUpload组件解决上传问题的,故使用SmartUpload组件的.getRequest().getParameter("XX")属性就可以获得“学期”的值了(当然一开始并没想到此方法,添加参数这一做法是后来加上去的),代码为:String XX=(String)mySmartUpload.getRequest().getParameter("XX");

PS:

若XX中含有中文时,则会出现乱码现象

处理方法如下:将提交页面的编码方式改为GBK,post后接收的页面的编码方式也改为GBK就OK了

<%@ page contentType="text/html; charset=GBK" language="java"   errorPage=""%>

如果还要传递到下一个页面,可以这样解决乱码问题:编码方式可以采用gb2312,然后转一下码,代码如下:

String XX=request.getParameter("XX");         

    XX=new String(XX.getBytes("ISO8859_1"),"GB2312");

这样就OK了 


分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics