java开发常用功能一---文件上传

     在学习ASP.NET控件的时候,我们学习过关于文件上传的控件,今天我主要介绍的是关于java中的文件上传.大家都知道HTML表单中有file标签用于在客户端向服务器上传文件,但是接收客户端上传文件的服务器端程序代码需要使用java来编写.这一部分的代码特别的复杂,这个时候我们就可以使用第三方控件--jspSmartUpload组件来实现.

.jspSmartUpload组件简介

     jspSmartUpload是一个可免费使用的全功能的文件上传下载组件,适于嵌入执行上传下载操作的JSP文件中。该组件有以下几个特点:

1、使用简单。在JSP文件中仅仅书写三五行java代码就可以搞定文件的上传或下载,方便。

2、能全程控制上传。利用jspSmartUpload组件提供的对象及其操作方法,可以获得全部上传文件的信息(包括文件名,大小,类型,扩展名,文件数据等),方便存取。

3、能对上传的文件在大小、类型等方面做出限制。

 

.jspSmartUpload组件相关类

1.File

     这个类包祖昂了一些上传文件的所有信息,通过它可以得到上传文件的文件名,文件大小,扩展名及文件数据信息

2.files

     files类表示所有上传文件的集合,通过它可以得到上传文件的数目,大小等信息.

3.request

     Request类的功能等同于JSP内置对象的request,它的作用就是获取上传文件项的值

4.SmartUpload

     此类主要是完成上传和下载的相关工作.

 

三上传文件例子

步骤一.建立文件夹

     为了存放上传的文件,需要事先在服务器中创建一个文件夹来存放,此文件夹的name要与sava()方法的第一个参数的名字相同.具体的操作如下;

 

     需要注意的是,如果不提前在web应用的目录中创建了upload文件夹,就会上传失败的,文件夹可以建立在两个目录下:

     目录一,将存放上传文件的文件夹放置于web应用的"WEB-INF"文件夹中,因为这个文件夹是在客户端不能访问的.

     目录二是在服务器中另建立一个文件夹,专门用来存放上传的文件,但是这样有损web应用的可移植性.


步骤二.引用jspSmartUpload.jar

     jspSmartUpload.jar包添加到"WEB-INF"中的lib文件夹下面,因为jspSmartUpload.jar包属于第三空间包,所以存放在"WEB-INF"中的lib文件夹,如果是环境变量所引用的包,就存放在"java Resources"下的libraries下面.

步骤三代码

上传页面代码

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>上传文件</title>
</head>
<body>
<form method="post"   action="uploadFileAccept.jsp"  name="book"  enctype="multipart/form-data">
	<table cellspacing="0" cellpadding="3" border="1" width="474">
		<tr>
 			<td align="center" colspan="2" >录入书籍信息</td>
		</tr>
		<tr>
			<td width="150">书名:</td>
			<td width="324"><input type="text" name="bookname"></td>
		</tr>
		<tr>
			<td>封面:</td>
			<td><input type="file" name="photofile"></td>
		</tr>
		<tr>
			<td>作者:</td>
			<td><input  type="text" name="autor"></td>
		</tr>
		<tr>
			<td>出版社:</td>
			<td><input type="text" name="publisher"></td>
			
		</tr>
		<tr>
			<td colspan="2" width="474"><input  type="Submit" value="提交" ></td>
		</tr>
	</table>

</form>
</body>
</html>

接收页面代码

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@page import="com.jspsmart.upload.SmartUpload"%>
<%@page import="com.jspsmart.upload.File"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>上传文件</title>
</head>
<body>
<%
//新建一个SmartUpload对象
     SmartUpload su = new SmartUpload();
     //初始化
     su.initialize(pageContext); //内置对象pageContext作为参数
     //设定允许上传的文件
     String allowed="jpg,bmp,png";
     su.setAllowedFilesList(allowed); //设置允许上传的扩展名
     String unallowed="bat";
     su.setDeniedFilesList(unallowed); //不允许上传
     su.setMaxFileSize(1024*1024*2);  //最大上传2M
      su.upload(); //上传到内存
      su.save("upload",SmartUpload.SAVE_VIRTUAL); //文件另存到tomcat部署的项目文件夹中,不是当前项目物理位置
     %>
	<table cellspacing="0" cellpadding="3" border="1" width="474">
		<tr>
			<td width="150">书名:</td>
			<td width="324"><%=su.getRequest().getParameter("bookname")%></td>
		</tr>
		<tr>
			<td>封面:</td>
			<td><img src="<%="upload/"+su.getFiles().getFile(0).getFileName()%>"></td>
		</tr>
		<tr>
			<td>作者:</td>
			<td><%=su.getRequest().getParameter("autor")%></td>
		</tr>
		<tr>
			<td>出版社:</td>
			<td><%=su.getRequest().getParameter("publisher")%></td>
			
		</tr>
	</table>
</body>
</html>

步骤四:效果图

上传页面

 

接收页面

 

.总结

     从上面的程序我们可以看出,仅用了9行代码就实现了上传文件的功能.使用第三方的控件就可以简单的解决了代码麻烦的问题.


,扩展

     有时候,也可能需要在一个表单中上传多个文件,比如QQ空间发表说说,一下需要上传多张的图片,那么这个时候怎么处理呢.我只提供一个思路,大家可以自己想想实现,具体的思路:通过SmartUpload类的getFiles().getFile(0).getFileName()方法可获得上传文件的名,其中getFile()方法的索引值是从0开始,即表单中的第1个文件框对应的索引号为0,2个索引值是1,一次类推.可以用循环来实现.

评论 31
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

弯_弯

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值