JSP使用SmartUpload上传文件

SmartUpload由于它的简单易用性现在仍然有很多人去使用,想要使用SmartUpload实现上传和下载功能,只需将SmartUpload.jar包复制到Tomcat安装目录下的/lib文件夹下即可。

现在首先实现简单的单个文件上传,这时必须要对表单进行封装。在form里面加上enctype=multipart/form-data”表示表单将按照二进制的方式提交,而且是整体提交,而不再是分别提交。

上传表单的jsp文件:

<%@ page language="java" import="java.util.*" pageEncoding="GB18030"%>

<html>

  <head>    

    <title>My JSP 'smartupload.jsp' starting page</title>

  </head>  

  <body>

  <fieldset>

   <legend>文件上传操作</legend>

   <form action="smartreceive.jsp" method="post"   enctype="multipart/form-data">

   请选择要上传的文件:<input type="file" name="pic"/>

   <input type="submit" value="上传"/>

   </form>

  </fieldset>

  </body>

</html>

   下面编写接受文件的jsp页面,并选择合适的文件夹存放上传的文件。

    <%@ page language="java" import="java.util.*" pageEncoding="GB18030"%>

<%@page import="org.lxh.smart.SmartUpload"%>

  <head>

    <title>My JSP 'smartreceive.jsp' starting page</title>

  </head>

  <body>

    <%

     SmartUpload smart = new SmartUpload() ;  

     smart.initialize(pageContext) ;    //初始化上传操作

     smart.upload() ;

     smart.save("uploadtest") ;  //保存上传文件在根目录下的uploadtest下

     %>

     <h2>文件上传成功,以保存在根目录下的uploadtest文件夹下</h2>

  </body>

</html>

   如果要实现批量上传的话通过循环取出即可。

   现在的一个有一个问题就是表单封装了以后,表单里面的一些内容就无法使用request内置对象取得。那这不是很麻烦,所以SmartUpload提供了相应的方法取得form里面的请求参数。

假如在前面文件上传的jsp文件里的表单下加入如下类容:

请输入上传的文件名:<input type="text" name="filename"><br />

即原来的代码变成了这样:

<%@ page language="java" import="java.util.*" pageEncoding="GB18030"%>

<html>

  <head>    

    <title>My JSP 'smartupload.jsp' starting page</title>

  </head>  

  <body>

  <%

    request.setCharacterEncoding("GBK") ;

   %>

  <fieldset>

   <legend>文件上传操作</legend>

   <form action="smartreceive.jsp" method="post" enctype="multipart/form-data">

   请输入上传的文件名:<input type="text" name="filename"/><br/>

   请选择要上传的文件:<input type="file" name="pic"/><br/>

   <input type="submit" value="上传"/>

   </form>

  </fieldset>

  </body>

</html>

那么这是如果通过在接受文件端使用request.getParameter("filename")是无法取得此属性的;

必须是用SmartUpload类中提供的getRequest()方法。此时接收的jsp文件为:

<%@ page language="java" import="java.util.*" pageEncoding="GB18030"%>

<%@page import="org.lxh.smart.SmartUpload"%>

  <head>

    <title>My JSP 'smartreceive.jsp' starting page</title>

  </head>

  <body>

    <%

     request.setCharacterEncoding("GBK") ;

     %>

    <%

     SmartUpload smart = new SmartUpload() ;  

     smart.initialize(config,request,response) ;  //初始化上传操作

     smart.upload() ;

     smart.save("upload") ;  //保存上传文件在根目录下的uploadtest下

     String filename = smart.getRequest().getParameter("filename") ;

     %>

     <h2>使用smart.getRequest()取得的文件名:<%=filename%></h2>

     <h2>使用request取得的文件名:<%=request.getParameter("filename")%></h2>

     <h2>文件上传成功,以保存在根目录下的uploadtest文件夹下</h2>

  </body>

</html>

(注意:smart.getRequest()方法必须在上传操作完成后才可以使用,要不是  无法取得的,有时候可能无法取得,重新打开浏览器即可,要是都还不行,直接换个浏览器,我就遇到过这个问题,郁闷了一下午,结果换个浏览器就可以了)

运行下:


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值