SmartUpload文件上传

SmartUpload是一款免费的文件上传组件,适用于Java环境,特点包括简单易用、能控制上传内容和文件大小类型。要使用它,需要在项目中添加jspsmartupload.jar并设置表单enctype属性。本文档介绍了SmartUpload的组件结构,如File和Files类,并提供了代码示例。

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

目录

一、SmartUpload组件是什么?

二、SmartUpload组件的特点

三、环境准备

四、File类及方法 (封装了单个上传文件所包含的所有信息)

五、Files类及方法 (封装了所有上传文件的信息集合)

 六、SmartUpload类及方法

七、代码

        1、完整引入

        2、完整读取


一、SmartUpload组件是什么?

专门用于实现文件上传及下载的免费组件

二、SmartUpload组件的特点

1)使用简单:编写少量代码,完成上传下载功能

2)能够控制上传内容

3)能够控制上传文件的大小、类型

4)缺点:目前已停止更新服务

三、环境准备

1)使用SmartUpload组件需要在项目中,将jspsmartupload.jar 添加到WEB-INF / lib目录下

2)导包

<%@taglib prefix="fc" uri="http://java.fckeditor.net"%>
        <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"         "http://www.w3.org/TR/html4/loose.dtd">

3)需要设置表单的enctype属性(表单必须以post方式提交)

        引入SmartUpload:必写

   <form action="需要跳转的页面.jsp" enctype="multipart/form-data" method="post">
       <input type="file" name="myfile"><br>
       <input type="submit" value="开始上传">
   </form>

        getRequest():得到com.jspsmart.upload.Request对象

四、File类及方法 (封装了单个上传文件所包含的所有信息)

  方法名称  说  明
saveAs(String destFilePathName)将文件保存,参数destFilePathName是保存的文件名
isMissing( )判断用户是否选择了文件,即对应表单项是否为空,返回值为boolean类型
public String getFieldName( )获取表单中当前上传文件所对应的表单项的名称
public String getFileName( )获取上传文件的文件名称,不包含路径

五、Files类及方法 (封装了所有上传文件的信息集合)

    属性名称  说  明
public int getCount()取得文件上传的数目
public File getFile(int index)取得指定位置的File文件对象
public long getSize()取得上传文件的总长度
public Collection getCollection()将所有上传文件对象以Collection的形式返回

 六、SmartUpload类及方法

          属性名称    说  明
public final void initialize(PageContext pageContext)执行上传和下载的初始化工作,必须实现
public void upload()实现文件数据的上传,在initialize方法后执行
public int save(String pathName)将全部上传文件保存到指定的目录下,并返回保存的文件个数
public void setAllowFilesList(String ExtList)指定允许上传的文件扩展名,接收一个扩展名列表,以逗号分隔
public void setDeniedFilesList( String   fileList)指定了禁止上传的文件扩展名列表,每个扩展名之间以逗号分隔
public void setMaxFileSize(long filesize)设定每个文件允许上传的最大长度
public  void setTotalMaxFileSIze(long totalfilesize)设定允许上传文件的总长度

七、代码

        1、完整引入

<%@page import="java.sql.ResultSet"%>
<%@page import="java.sql.DriverManager"%>
<%@page import="java.sql.PreparedStatement"%>
<%@page import="java.sql.Connection"%>
<%@ 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>
<link href="../CSS/admin.css" rel="stylesheet" type="text/css" />
</head>
<body>
<%
	//判断用户是不是为空
	Object obj = session.getAttribute("a");
	if(obj==null){
		out.print("<script>alert('你没有登录,请先登录');location.href='../login.jsp'</script>");
	}
%>
<div id="header">
  <div id="welcome">欢迎使用新闻管理系统!</div>
  <div id="nav">
    <div id="logo"><img src="../images/logo.jpg" alt="新闻中国" /></div>
    <div id="a_b01"><img src="../images/a_b01.gif" alt="" /></div>
  </div>
</div>
<div id="admin_bar">
   <div id="status">管理员: <%=session.getAttribute("a") %>  &#160;&#160;&#160;&#160; <a href="login.jsp">login out</a></div>
  <div id="channel"> </div>
</div>
<div id="main">
  <div id="opt_list">
    <ul>
      <li><a href="add_news.jsp">添加新闻</a></li>
      <li><a href="../admin.jsp">编辑新闻</a></li>
      <li><a href="../admin.jsp">查找新闻</a></li>
      <li><a href="add_sub.jsp">添加主题</a></li>
      <li><a href="update_sub.jsp">编辑主题</a></li>
      <li><a href="../dodele.jsp">删除主题</a></li>
    </ul>
  </div>
  <div id="opt_area">
    <h1 id="opt_type"> 添加新闻: </h1>
    <form action="doadd_news.jsp" enctype="multipart/form-data" method="post">
      <p>
        <label> 主题 </label>
        <select name="ntid">
         <%
         Class.forName("oracle.jdbc.driver.OracleDriver");
 		//2、连接数据库
 		String url = "jdbc:oracle:thin:@localhost:1521:ORCL";
 		Connection con = DriverManager.getConnection(url, "scott", "tiger");
 		//3、定义那个对象,用来执行sql语句
 		PreparedStatement ps = con.prepareStatement("select * from subject");
 		ResultSet rs=ps.executeQuery();
 		while(rs.next()){
 			%>
 			<option value="<%=rs.getInt(1)%>"><%=rs.getString(2) %></option>
 		}
         <% }%>
        </select>
      </p>
      <p>
        <label> 标题 </label>
        <input name="ntitle" type="text" class="opt_input" />
      </p>
      <p>
        <label> 作者 </label>
        <input name="nauthor" type="text" class="opt_input" />
      </p>
      <p>
        <label> 摘要 </label>
        <textarea name="nsummary" cols="40" rows="3"></textarea>
      </p>
      <p>
        <label> 内容 </label>
        <textarea name="ncontent" cols="70" rows="10"></textarea>
      </p>
      <p>
        <label> 上传图片 </label>
        <input name="file" type="file" class="opt_input" />
      </p>
      <input name="action" type="hidden" value="addnews">
      <input type="submit" value="提交" class="opt_sub" />
      <input type="reset" value="重置" class="opt_sub" />
    </form>
  </div>
</div>
<div id="site_link"> <a href="#">关于我们</a><span>|</span> <a href="#">Aboue Us</a><span>|</span> <a href="#">联系我们</a><span>|</span> <a href="#">广告服务</a><span>|</span> <a href="#">供稿服务</a><span>|</span> <a href="#">法律声明</a><span>|</span> <a href="#">招聘信息</a><span>|</span> <a href="#">网站地图</a><span>|</span> <a href="#">留言反馈</a> </div>
<div id="footer">
  <p class="">24小时客户服务热线:010-68988888  &#160;&#160;&#160;&#160; <a href="#">常见问题解答</a> &#160;&#160;&#160;&#160;  新闻热线:010-627488888<br />
    文明办网文明上网举报电话:010-627488888  &#160;&#160;&#160;&#160;  举报邮箱:<a href="#">jubao@jb-aptech.com.cn</a></p>
  <p class="copyright">Copyright &copy; 1999-2009 News China gov, All Right Reserver<br />
    新闻中国   版权所有</p>
</div>
</body>
</html>

        2、完整读取

<%@page import="com.jspsmart.upload.Request"%>
<%@page import="com.jspsmart.upload.SmartUpload"%>
<%@page import="com.jspsmart.upload.File"%>
<%@page import="java.sql.ResultSet"%>
<%@page import="java.sql.PreparedStatement"%>
<%@page import="java.sql.DriverManager"%>
<%@page import="java.sql.Connection"%>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%
	//创建SmartUpload对象
	SmartUpload su = new SmartUpload();
	//初始化
	su.initialize(pageContext);
	//声明一个File对象 用来接收上传的文件
	File file = null;
	//设置允许上传的文件类型
	su.setAllowedFilesList("jpg,png,gif,jpeg");
	//设置不允许上传的文件类型
	su.setDeniedFilesList("bat,exe,mp4");
	//设置单文件大小
	su.setMaxFileSize(40000);
	//设置总文件大小
	su.setTotalMaxFileSize(50000);
	//设置编码
	su.setCharset("utf-8");
	//开始上传
	su.upload();	
	//获取文件集合中的第一个文件
	file = su.getFiles().getFile(0);
	String filePath = "";
	if(!file.isMissing()){
		//拼接文件上传到服务器的 路径
		filePath ="onload/"+file.getFileName();
		//上传到服务器 保存到指定路径
		file.saveAs(filePath,SmartUpload.SAVE_VIRTUAL);
	}
	
	Request req = su.getRequest();
	request.setCharacterEncoding("utf-8");
	response.setCharacterEncoding("utf-8");
 
//接受添加界面的数据
int tid=Integer.valueOf(req.getParameter("ntid"));
String ntitle=req.getParameter("ntitle");
String nzz=req.getParameter("nauthor");
String nzy=req.getParameter("nsummary");
String nnr=req.getParameter("ncontent");
Class.forName("oracle.jdbc.driver.OracleDriver");
	//2、连接数据库
	String url = "jdbc:oracle:thin:@localhost:1521:ORCL";
	Connection con = DriverManager.getConnection(url, "scott", "tiger");
	//3、定义那个对象,用来执行sql语句
	int nextNid=1;
	PreparedStatement ps=con.prepareStatement("select max(nid) from news");
	ResultSet rs=ps.executeQuery();
	if(rs.next()){
		nextNid=rs.getInt(1)+1;
	}
	ps=con.prepareStatement("insert into news values(?,?,?,?,?,sysdate,0,?,?)");
	ps.setInt(1, nextNid);
	ps.setInt(2, tid);
	ps.setString(3, ntitle);
	ps.setString(4, nzz);
	ps.setString(5, nnr);
	ps.setString(6, nzy);
	ps.setString(7, filePath);
	int i=ps.executeUpdate();
	if(i>0){
		out.print("<script>alert('添加成功');location.href='../admin.jsp'</script>");
	}else{
		out.print("<script>alert('添加失败');location.href='doadd_news.jsp'</script>");
	}
%>

该处使用了SmartUpload对象,它会和request对象产生冲突,使request对象获取不到值,所以需要使用Request的req来获取数据。在使用文本编辑器和SmartUpload文件上传都需要相对应的jar文件。

“三号路依然长得没有尽头

    梧桐荫还是枝繁叶茂”

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值