关于input标签带有enctype="multipart/form-data"而导致getParameter获取不到值的解决方法2
2017-07-11 12:47
1141 查看
首先,我在这里使用的是jspSmartUpload的jar包1.由于jspSmartUpload的默认编码方式不是utf8,所以首先修改一下jspSmartUpload源文件:对于上传:在SmartUpload.java类中①.在Upload()方法中,将
String var19 = new String(this.m_binArray, this.m_startData, this.m_endData - this.m 4000 _startData + 1);
改为
String var19 = new String(this.m_binArray, this.m_startData, this.m_endData - this.m_startData + 1, "UTF-8");
②.在getDataHeader()方法中,将
var5 = new String(this.m_binArray, var1, var2 - var1 + 1);
改为
try { String encode = this.m_response.getCharacterEncoding(); if(encode.equalsIgnoreCase("UTF-8")) { new String(this.m_binArray, var1, var2 - var1 + 1, "UTF-8"); var5 = new String(this.m_binArray, var1, var2 - var1 + 1, "UTF-8"); } else { var5 = new String(this.m_binArray, var1, var2 - var1 + 1); } } catch (UnsupportedEncodingException var7) { var7.printStackTrace(); }
在File.java类中
在getContentString()方法中,将
var1 = new String(this.m_parent.m_binArray, this.m_startData, this.m_size);
改为
try { var1 = new String(this.m_parent.m_binArray, this.m_startData, this.m_size, "UTF-8"); } catch (UnsupportedEncodingException var3) { var3.printStackTrace(); }对于下载:
在SmartUpload.java类中
在downloadFile(String var1, String var2, String var3, int var4)方法中,将
if(var3 == null) { this.m_response.setHeader("Content-Disposition", this.m_contentDisposition + " filename=" + this.getFileName(var1)); } else if(var3.length() == 0) { this.m_response.setHeader("Content-Disposition", this.m_contentDisposition); } else { this.m_response.setHeader("Content-Disposition", this.m_contentDisposition + " filename=" + var3); }改为
if(var3 == null) { this.m_response.setHeader("Content-Disposition", this.m_contentDisposition + " filename=" + this.toUtf8String(this.getFileName(var1))); } else if(var3.length() == 0) { this.m_response.setHeader("Content-Disposition", this.m_contentDisposition); } else { this.m_response.setHeader("Content-Disposition", this.m_contentDisposition + " filename=" + this.toUtf8String(var3)); }
同时添加toUtf8String(String fileName) 方法
public String toUtf8String(String fileName) { StringBuffer stringBuffer = new StringBuffer(); for(int i = 0; i < fileName.length(); ++i) { char c = fileName.charAt(i); if(c >= 0 && c <= 255) { stringBuffer.append(c); } else { byte[] bytes; try { bytes = Character.toString(c).getBytes("UTF-8"); } catch (UnsupportedEncodingException var8) { var8.printStackTrace(); bytes = new byte[0]; } for(int j = 0; j < bytes.length; ++j) { int k = bytes[j]; if(k < 0) { k += 256; } stringBuffer.append("%" + Integer.toHexString(k).toUpperCase()); } } } return stringBuffer.toString(); }
2.在servlet中加入
SmartUpload smartUpload = new SmartUpload();smartUpload.initialize(getServletConfig(),request,response);try {smartUpload.upload();} catch (SmartUploadException e) {e.printStackTrace();}及将
String title = request().getParameter("title");改为
String title = smartUpload.getRequest().getParameter("title");
3.对于如何修改jar包中的源代码(不需要反编译工具):首先将你要更改的源码文件在eclipse或intelliJ中编译成.class文件再找到你需要更改的.jar包在桌面右键新建个文件夹把你要改的.jar包ctrl+c和ctrl+v准备好一个压缩工具(2345或360压缩都可以)选中.jar包右键解压到当前文件夹下逐层文件夹找到你要更改的.class文件替换掉最后在将你刚刚解压出来的文件选中再次压缩回zip(或者其他都可以),在右键重命名将后缀名改成.jar即可注意:1.在编译成class文件的过程中,创建的java类及其包都要一模一样
2.一定要保证jsp,servlet,tomcat及mysql的编码方式均为utf8(或者其他相同的编码方式),
可以参考我的另一篇文章http://blog.csdn.net/yin__ren/article/details/74942353
对于上面的解释,来源于:http://www.jb51.net/article/85944.htm 和 http://www.cnblogs.com/wanqi007/p/5766030.html[/code]
相关文章推荐
- 解决当FORM的ENCTYPE="multipart/form-data" 时request.getParameter()获取不到值的方法
- 解决当FORM的ENCTYPE="multipart/form-data" 时request.getParameter()获取不到值的方法
- 解决当FORM的ENCTYPE="multipart/form-data" 时request.getParameter()获取不到值的方法
- java 页面上有ENCTYPE="multipart/form-data" 时action方法或者控制层用request.getParameter()获取不到值的方法
- 解决当FORM的ENCTYPE="multipart/form-data" 时request.getParameter()获取不到值的方法
- 解决当FORM的ENCTYPE="multipart/form-data" 时request.getParameter()获取不到值的方法 ?
- 解决当FORM的ENCTYPE="multipart/form-data" 时request.getParameter()获取不到值的方法
- 解决当FORM的ENCTYPE="multipart/form-data" 时request.getParameter()获取不到值的方法
- FORM的ENCTYPE="multipart/form-data" request.getParameter()获取不到值
- JSP使用ENCTYPE="multipart/form-data"后request.getParameter无效问题Common-FileUpload组件解决方法
- JSP使用ENCTYPE="multipart/form-data"后request.getParameter无效问题Common-FileUpload组件解决方法
- form enctype:"multipart/form-data",method:"post" 提交表单,后台获取不到数据
- 当FORM的ENCTYPE=&quot;multipart/form-data&quot; 时request.getParameter()获取不到
- form enctype:"multipart/form-data",method:"post" 提交表单,后台获取不到数据
- 上传文件form表单enctype="multipart/form-data"传值解决办法(代原代码)
- FORM的ENCTYPE="multipart/form-data" 时request.getParameter()值为null问题的解决
- asp中enctype="multipart/form-data"获取Form表单的值
- enctype="multipart/Form-data"取不到值
- FORM的ENCTYPE="multipart/form-data" 时request.getParameter()值为null问题的解决
- enctype="multipart/form-data"的表单无法获取表单中除了type=file以外的其他参数 commons-fileupload 获取除file外其他参数