jspSmartUpload上传文件,主要体现对上传失败的文件进行提示,api没有找到这方面的实现。于是剑走偏锋,对Exception的信息进行了contains操作,从而判断是哪种上传失败类型。不知道这种方式是否合理,请大家指正……
一、将jspSmartUpload.jar导入到项目的lib中。
二、上传页面
上传页面简单实现,1个from,2个文本域,1个上传按钮。注意form需要添加属性enctype="multipart/form-data"
<form name="queryform" id="queryform" method="post" enctype="multipart/form-data">
<table>
<tr class="formtext">
<td width="82" height="24" align="right">文件 | </td>
<td width="150" align="left" style="padding-left:8px">
<input type="file" name="upFile" id="upFile"/>
</td>
<td width="150" align="right"><nobr>文件2 | </nobr></td>
<td width="150">
<input type="file" name="upFile2" id="upFile2"/>
</td>
<span style="white-space:pre"> <td width="150" align="right"><nobr>文件名称 | </nobr></td>
<span style="white-space:pre"> </span><td width="150">
<span style="white-space:pre"> </span><input type="text" name="fileName" id="fileName"/>
<span style="white-space:pre"> </span></td></span>
<td></td>
</tr>
<tr class="formtext">
<td colspan="6"></td>
<td width="200" style="padding-left:30px">
<a class="itebtn" onClick="javascript:upFile()"><span>上传</span></a>
</td>
<td></td>
</tr>
</table>
</form>
<script>
//上传文件
function upFile(){//js简单实现,并不完整
<span style="white-space:pre"> </span>checked = true;
<span style="white-space:pre"> </span>//判断是否选择相关文件
<span style="white-space:pre"> </span>fileName = $("#upFile").val();
<span style="white-space:pre"> </span>if(fileName == "")
<span style="white-space:pre"> </span>{
<span style="white-space:pre"> </span>alert("请选择批量导入需要的文档!");
<span style="white-space:pre"> </span>checked = false;
<span style="white-space:pre"> </span>}
<span style="white-space:pre"> </span>if(checked)
<span style="white-space:pre"> </span>{
<span style="white-space:pre"> </span>$("#queryform").attr('target','_self');
<span style="white-space:pre"> </span>$("#queryform").attr('action','smartUploadTestUtil.jsp');
<span style="white-space:pre"> </span>$("#queryform").submit();
<span style="white-space:pre"> </span>}
}
</script>
三、处理上传文件页面
<%@ page contentType="text/html; charset=gb2312" pageEncoding="gb2312"%>
<%@page import="java.util.Properties,java.util.*,com.jspsmart.upload.*"%>
<%
/*
注意:
1.上传文件名如果相同,那么会覆盖。
2.使用jspSmartUpload进行下载,如果文件名中包括中文,下载将会出现问题,需要修改源码,放弃使用jspSmartUpload进行下载。上传没有问题。
3.
*/
SmartUpload mySmartUpload = new SmartUpload();
try {
// 新建一个SmartUpload对象
SmartUpload su = new SmartUpload();
// 上传初始化
su.initialize(pageContext);
// 设定上传限制
// 1.限制每个上传文件的最大长度。
su.setMaxFileSize(500);
// 2.限制总上传数据的长度。
su.setTotalMaxFileSize(2000);
// 3.设定允许上传的文件(通过扩展名限制),仅允许doc,txt文件。
su.setAllowedFilesList("doc,jpg,txt");
// 4.设定禁止上传的文件(通过扩展名限制),禁止上传带有exe,bat,jsp,htm,html扩展名的文件和没有扩展名的文件。
// su.setDeniedFilesList("exe,bat,jsp,htm,html,,");
// 上传文件
try{
su.upload();
}catch(Exception e){
System.out.println("upload出错。e="+e);
String errM = e.getMessage();
out.print("upload出错。e="+errM);
//弹出详细的提示,更加友好
if(errM.startsWith("size")){
out.print("<script>alert('对不起,上传的附件最大只能为2M!');history.go(-1);</script>");
}else if(errM.contains("The extension of the file is not allowed to be uploaded")){
out.print("<script>alert('只能上传excel格式的文件!');history.go(-1);</script>");
}else if(errM.contains("Total File Size exceeded")){
out.print("<script>alert('对不起,全部附件最大只能为2M!');history.go(-1);</script>");
}else{
out.print("<script>alert('附件上传有问题!');history.go(-1);</script>");
}
return;
}
// 利用Request对象获取参数之值
String fileName = su.getRequest().getParameter("fileName");//获取表单输入的文件名称
out.print("fileName="+fileName+"</br>");
//一个文件一个文件的上传,可以更改文件名称
for(int i=0; i<su.getFiles().getCount();i++){
File file = su.getFiles().getFile(i);
out.println("1:"+file.getFieldName());//表单名称
out.print("</br>");
out.println("2:"+file.getFileName());//上传的文件 名
out.print("</br>");
out.println("3:"+file.getFilePathName());//上传的文件名带目录信息
out.print("</br>");
out.println("4:"+file.getFileExt());//文件扩展名
out.print("</br>");
out.println("5:"+file.getSize());//
out.print("</br>");
out.println("6:"+file.isMissing());//表单项是否选择了文件,选择了是false,未选择是true。
out.println("</br>");
//更改上传文件的文件名
if(!file.isMissing()){//上传了文件
int pos = file.getFileName().lastIndexOf(".");
file.saveAs("uploadTest/"+file.getFileName().substring(0,pos)+fileName+"123"+"."+file.getFileExt(),file.SAVEAS_VIRTUAL);
}
out.print("</br>------------------------------------------------</br>");
System.out.println("上传第"+i+"个文件。");
}
// 将上传文件全部保存到指定目录,需要先在在Web应用的根目录下,创建一个uploadTest目录
//多个文件一起上传,不能改名
// int count = su.save("uploadTest");
// out.println(count+"个文件上传成功!<br>");
} catch (Exception e) {
out.println("Unable to upload the file.<br>");
out.println("Error : " + e.toString());
}
%>
四、上传页面截屏(大概就是这个样子)
五、代码分享
http://note.youdao.com/share/?id=ce270e82ef0868f72f34c354bf5a9782&type=note