关于input标签带有enctype="multipart/form-data"而导致getParameter获取不到值的解决方法2
来源:互联网 发布:记账软件破解版 编辑:程序博客网 时间:2024/06/12 03:39
首先,我在这里使用的是jspSmartUpload的jar包
1.由于jspSmartUpload的默认编码方式不是utf8,所以首先修改一下jspSmartUpload源文件:
对于上传:
在SmartUpload.java类中
①.在Upload()方法中,将
String var19 = new String(this.m_binArray, this.m_startData, this.m_endData - this.m_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即可
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
阅读全文
0 0
- 关于input标签带有enctype="multipart/form-data"而导致getParameter获取不到值的解决方法2
- 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()获取不到值的方法
- 解决当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()获取不到值的问题
- java 页面上有ENCTYPE="multipart/form-data" 时action方法或者控制层用request.getParameter()获取不到值的方法
- FORM的ENCTYPE="multipart/form-data" 时request.getParameter()值为null问题的解决
- FORM的ENCTYPE="multipart/form-data" 时request.getParameter()值为null问题的解决
- FORM的ENCTYPE="multipart/form-data" 时request.getParameter()值为null问题的解决
- enctype="multipart/Form-data"取不到值
- enctype="multipart/Form-data"取不到值
- enctype="multipart/form-data"中Form参数的获取
- JSP使用ENCTYPE="multipart/form-data"后request.getParameter无效问题Common-FileUpload组件解决方法
- CentOS7持续集成自动化部署
- Read Preference in MongoDB
- JavaScript基础(五)--- 基本数据类型和引用数据类型
- os.getcwd()和os.path.realpath(__file__)的区别
- PAT程序设计考题——甲级1006(Sign In and Sign Out ) C++实现
- 关于input标签带有enctype="multipart/form-data"而导致getParameter获取不到值的解决方法2
- 软中断和TASKLET
- nginx---浏览器设置缓存
- Python使用linecache高效读入大文件内容(M级以上)
- 简单应用最小二乘准则
- java并发-独占锁与共享锁
- USACO-Section1.4 airprog[枚举]
- MyEclipse创建Maven项目提示缺少maven-resources-plugin:2.6
- Activity touch事件传递流程分析