日期:2014-05-16  浏览次数:20288 次

关于enctype=multipart/form-data和使用jspsmartupload组件中文参数乱码
当在网页制作过程中如果涉及文件上传的,要使用enctype=multipart/form-data编码协议;
和application/x-www-form-urlencoded的区别如下:
/**********以下来自百度百科

---------------------------
application/x-www-form-urlencoded: 窗体数据被编码为名称/值对。这是标准的编码格式。
  multipart/form-data: 窗体数据被编码为一条消息,页上的每个控件对应消息中的一个部分,上传附件用到
  text/plain: 窗体数据以纯文本形式进行编码,其中不含任何控件或格式字符。
  enctype="multipart/form-data是设置表单的MIME编码。默认情况,这个编码格式是application/x-www-form-urlencoded,不能用于文件上传;只有使用了multipart/form-data,才能完整的传递文件数据。

----------------------------
************/

使用该方式传递的一个结果是通过request对象的getParameter方法不再获得参数,为null值。
如果自己解析流来获取参数也是可以的,但比较麻烦,不适合新手。这里我们可以用jspsmartupload包的相应对象方法来获取相应值:

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

su.initialize(this.getServletConfig(), request, response);//servlet中的初始化
su.initialize(pageContext);//jsp中的初始化
su.upload();//将文件上传
Request suRque = su.getRequest();
String sex = suRque.getParameter(参数名);
就可以获取参数了。
不过官方给的jspsmartupload文件在获取中文文件名、中文参数时会乱码,解决办法可以自己修改里面的代码;具体可上网查查。
这里给出一个别人写好的;方便像我一样的新手们使用。