jspSmartUpload上传文件

本文介绍了如何使用jspSmartUpload进行文件上传,并着重讨论了如何处理上传失败的情况,尤其是通过检查Exception信息来判断上传失败类型的方法。作者分享了在上传页面的实现和代码细节,并提供了代码笔记链接。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

         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>文件名称&nbsp;|&nbsp;</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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值