当前位置:编程学习 > JAVA >>

SmartUpload上传文件名为中文时报错

----------------------------页面代码----------------------------
<table width="100%" border="0" cellspacing="0" cellpadding="0" id='2'>

<tr><td>名称</td>
<td colspan="3">
<input name="fldName" type="text" class="textbox" size="50" value="<%=szName%>">
</td>
<td></td>
</tr>

<tr><td>描述</td>
<td colspan="3">
<input name="fldDesc" type="text" class="textbox" size="50" value="<%=szDesc%>">
</td>
<td></td>
</tr>

<tr><td vlagin=>文件</td>
<td colspan="3">
<input name="fldFile" type="file" class="textbox" size="50" value="<%=szFile%>" <% if(g_szOper.equals("2")) out.print(" readonly "); %> >
</td>
<td></td>
</tr>

</table>------------------------upload代码------------------------------------------
SmartUpload su = new SmartUpload();
su.initialize(pageContext);
su.setTotalMaxFileSize(10000000);
 su.setAllowedFilesList("pdf");
su.upload();

szName =su.getRequest().getParameter("fldName");
szDesc =su.getRequest().getParameter("fldDesc");
szOper = su.getRequest().getParameter("Oper");
szOID = su.getRequest().getParameter("oid");
szPage = su.getRequest().getParameter("Page");
szTable = su.getRequest().getParameter("Table");
szPID = su.getRequest().getParameter("pid");

for (int i=0;i<su.getFiles().getCount();i++)
{
com.jspsmart.upload.File file = su.getFiles().getFile(i);

if (file.isMissing()) continue;

out.println("<TABLE BORDER=1>");
out.println("<TR><TD>表单项名(FieldName)</TD><TD>"
+ file.getFieldName() + "</TD></TR>");
out.println("<TR><TD>文件长度(Size)</TD><TD>" + 
file.getSize() + "</TD></TR>");
out.println("<TR><TD>文件名(FileName)</TD><TD>" 
+ file.getFileName() + "</TD></TR>");
out.println("<TR><TD>文件扩展名(FileExt)</TD><TD>" 
+ file.getFileExt() + "</TD></TR>");
out.println("<TR><TD>文件全名(FilePathName)</TD><TD>"
+ file.getFilePathName() + "</TD></TR>");
out.println("</TABLE><BR>");
szFile = file.getFileName();
//out.print(szFile);
//szFile = new String(szFile.getBytes("ISO8859_1"),"UTF-8");
//out.print("11111111111:"+szFile);
String szPath = g_szUploadFolder + "\\" + szPID;
File fl = new File(szPath);
if(fl.exists())
{
}
else
{
fl.mkdir();
}
//out.println(szPath);
file.saveAs(szPath + "\\" + szFile, su.SAVE_PHYSICAL);
}
}
catch(Exception e)
{
out.println(e);
}
// szUrl = szPage + "?Oper=" + oper + "&oid=" + nid +"&Table="+szTable +"&pid=" + parentID;
String szUrl;
szUrl = "EditSpecFile.jsp?Oper="+szOper;
szUrl += "&oid=" + szOID;
szUrl += "&Table="+szTable;
szUrl += "&pid="+szPID;
szUrl += "&fldName="+szName;
szUrl += "&fldDesc="+szDesc;
szUrl += "&fldFile="+szFile;
out.println(szUrl);
response.sendRedirect(szUrl);


------------------------------
在su.upload();报错

前提是把response.sendRedirect(szUrl);注释才能看到报错,否则什么效果都没,页面也什么都不显示

报错信息:java.lang.SecurityException: The extension of the file is not allowed to be uploaded (1010). EditSpecFile.jsp?Oper=&oid=&Table=&pid=&fldName=&fldDesc=&fldFile= 

上传的文件是  C:\Users\zenglinggui\Desktop\Java编程思想第4版.pdf

--------------------编程问答-------------------- response.sendRedirect(szUrl);
这个是重定向,是属于浏览器端的跳转,没有经过服务器。所以包含中文就报错。使用请求转发的方式试一下 --------------------编程问答--------------------
引用 1 楼  的回复:
response.sendRedirect(szUrl);
这个是重定向,是属于浏览器端的跳转,没有经过服务器。所以包含中文就报错。使用请求转发的方式试一下


request.getRequestDispatcher(szUrl).forward(request,response); 这个模式效果是一样的! --------------------编程问答--------------------

楼主上传之前先设置编码格式啊,这是我以前写的~~

<%@page import="com.jspsmart.upload.SmartUpload" pageEncoding="UTF-8"%>
<%@page import="com.jspsmart.upload.File"%>
<%@page import="com.jspsmart.upload.Request"%>
<%
//创建smartUpload对象
SmartUpload smartUpload = new SmartUpload();
smartUpload.initialize(pageContext);  //初始化
smartUpload.setCharset("UTF-8");

try{
//定义文件允许上传类型
smartUpload.setAllowedFilesList("jpg,doc");
//定义文件不允许上传类型
smartUpload.setDeniedFilesList("txt");
smartUpload.setMaxFileSize(200000);
//开始上传
smartUpload.upload();
//获取request对象
Request req = smartUpload.getRequest();
String name = req.getParameter("param");
out.print(name);
//得到单个文件上传信息
File file = smartUpload.getFiles().getFile(0);

if(!file.isMissing()){
//设置文件在服务器重保存的位置
String filePath = "/file/";
filePath += file.getFileName();
file.setCharset("UTF-8");
file.saveAs(filePath,SmartUpload.SAVE_VIRTUAL);
//response.sendRedirect("index.jsp");
}
}catch(Exception e){
e.printStackTrace();
}

%>
补充:Java ,  Web 开发
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,