您的位置:首页 > 编程语言 > PHP开发

关于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] 
                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐