zoukankan      html  css  js  c++  java
  • SmartUpload组件+Servlet+Jsp实现文件的上传和下载

    SmartUploadServlet.java

    import java.io.*;
    import java.util.*;
    import javax.servlet.*;
    import javax.servlet.http.*;
    import com.jspsmart.upload.*;;
    public class SmartUploadServlet extends HttpServlet {
    private ServletConfig config;
    //初始化Servlet
    final public void init(ServletConfig config)
    throws ServletException{
    this.config=config;
    }
    //处理GET请求
    public void doGet(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {

    this.doPost(request, response);
    }
    //响应POST请求
    public void doPost(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
    //获取PrintWriter对象
    PrintWriter out = response.getWriter();
    out.println(
    "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">");
    out.println(
    "<HTML>");
    out.println(
    "<HEAD><TITLE>A Servlet</TITLE></HEAD>");
    out.println(
    "<BODY bgcolor='white'><center><br>");
    out.println(
    "<br><h1>jspSmartUpload</h1>");
    out.println(
    "<hr><br>");
    //新建一个SmartUpload对象
    SmartUpload mySmartUpload=new SmartUpload();
    try{
    //上传初始化
    mySmartUpload.initialize(config, request, response);
    //设定每个上传文件的最大长度
    mySmartUpload.setMaxFileSize(1*512*1024);
    //设定总上传数据的长度
    mySmartUpload.setTotalMaxFileSize(1*1024*1024);
    //设定允许上传的文件的类型,只允许上传java,doc,txt文件
    mySmartUpload.setAllowedFilesList("java,doc,txt");
    //设定禁止上传的文件的类型,禁止上传带有exe,bat文件
    mySmartUpload.setDeniedFilesList("exe,bat");
    //上传文件
    mySmartUpload.upload();
    //将上传文件全部保存到指定目录
    int count=mySmartUpload.save("/");
    out.println(
    //利用Request对象获取参数之值
    mySmartUpload.getRequest().getParameter("paramete")+"&nbsp;");
    //显示处理结果
    out.println("<font color=red>"+count+"</font>&nbsp;File Upload!<br>");
    //处理每个上传文件
    for(int i=0;i<mySmartUpload.getFiles().getCount();i++)
    {
    com.jspsmart.upload.File file
    =mySmartUpload.getFiles().getFile(i);
    //判断用户是否选择了文件
    if(!file.isMissing()){
    //打印文件名
    out.println("File Name:&nbsp;<font color=red>"
    +file.getFileName()+"</font><br>");
    //打印文件扩展名
    out.println("File ExtName:&nbsp;<font color=red>"
    +file.getFileExt()+"</font><br>");
    //打印文件路径,包括目录
    out.println("Path:&nbsp;<font color=red>"
    +file.getFilePathName()+"</font><br>");
    //另存到以Web应用程序的根目录为文件根目录的目录下
    //(声明一下:在Myeclipse中,该目录位于工程下的.metadata/.me_tcat/webapps/该工程目录/upload/)
    file.saveAs("/upload/"+file.getFileName(),mySmartUpload.SAVE_VIRTUAL);
    //另存到操作系统的根目录为文件根目录的目录下
    file.saveAs("F:\\my tool\\project\\SmartUpload\\temp\\"+file.getFileName(),
    mySmartUpload.SAVE_PHYSICAL);
    }
    }
    }
    catch(Exception e){//异常处理
    //打印自定义异常信息
    out.println("Unanable to upload the file.<br>");
    out.println(
    "Please Check The File Type");
    }
    out.println(
    "</center></BODY>");
    out.println(
    "</HTML>");
    }
    }

      upload.jsp

    <%@ page contentType="text/html;charset=gb2312"%>
    <html>
    <head>
    <title>jspSmartUpload组件文件上传</title>
    </head>
    <body>
    <br><br><center>
    <font size="5" color="#ff0000"><b>jspSmartUpload组件文件上传</b></font><br>
    <form name="uploadForm" enctype="multipart/form-data"
    method
    ="post" action="servlet/SmartUploadServlet">
    <table border="0" align="center" cellpadding="2" cellspacing="2" bgcolor="snow">
    <input type="hidden" name="paramete" value="OK!">
    <tr>
    <td>
    <div align="center">上传文件1:</div>
    </td>
    <td><div align="center">
    <input type="file" name="file1" size="25" maxlength="80">
    </div></td>
    </tr>
    <tr>
    <td>
    <div align="center">上传文件2:</div>
    </td>
    <td><div align="center">
    <input type="file" name="file2" size="25" maxlength="80">
    </div></td>
    </tr>
    <tr width="100%">
    <td>
    <div align="center"><input type="submit" value="上传文件">
    <input type="reset" value="清除"></div>
    </td>
    </tr>
    </table>
    </form></center>
    </body>
    </html>

      SmartDownloadServlet.java

        

    import java.io.*;
    import java.util.*;
    import javax.servlet.*;
    import javax.servlet.http.*;
    import com.jspsmart.upload.*;;
    public class SmartDownloadServlet extends HttpServlet {
    private ServletConfig config;
    //初始化Servlet
    final public void init(ServletConfig config)
    throws ServletException{
    this.config=config;
    }
    //处理GET请求
    public void doGet(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
    this.doPost(request, response);
    }
    //响应POST请求
    public void doPost(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
    //获取PrintWriter对象
    //PrintWriter out = response.getWriter(); //这里会出现异常
    out.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">");
    out.println("<HTML>");
    out.println("<HEAD><TITLE>A Servlet</TITLE></HEAD>");
    out.println("<BODY bgcolor='white'><center><br>");
    out.println("<br><h1>jspSmartDownload</h1>");
    out.println("<hr><br>");
    //新建一个SmartUpload对象
    SmartUpload mySmartUpload=new SmartUpload();
    try{
    //上传初始化
    mySmartUpload.initialize(config, request, response);
    String fileName=request.getParameter("fileName");
    //设定contentDisposition为null以禁止浏览器
    //自动打开文件
    //保证单击链接后是下载文件,若不设定,则
    mySmartUpload.setContentDisposition(null);
    //下载文件
    mySmartUpload.downloadFile("/upload/"+fileName);
    }catch(Exception e){//异常处理
    //打印自定义异常信息
    //out.println("Download Fail.<br>");
    //out.println(e.toString());
    //想要打印信息可参考下面的补充说明
    }
    //out.println("</center></BODY>");
    //out.println("</HTML>");
    }
    }

      download.jsp

    <%@ page contentType="text/html;charset=gb2312"%>
    <html>
    <head>
    <title>jspSmartUpload组件下载文件</title>
    </head>
    <body>
    <br><br><center>
    <font size="5" color="#ff0000"><b>jspSmartUpload组件下载文件</b></font><br>
    <form name="uploadForm" enctype="multipart/form-data"
    method
    ="post" action="servlet/SmartDownloadServlet">
    <table border="0" align="center" cellpadding="2" cellspacing="2" bgcolor="snow">
    <tr>
    <td>
    <div align="center">
    <a href="servlet/SmartDownloadServlet?fileName=1.jpg">文件1</a>
    </div>
    </td>
    <td>
    <div align="center">
    <a href="servlet/SmartDownloadServlet?fileName=2.jpg">文件2</a>
    </div>
    </td>
    </tr>
    </table>
    </form></center>
    </body>
    </html>

     

    对 jspSmartUpload上传下载全攻略 的一点补充和说明!!

    如果要在servlet中使用jspSmartUpload.则须改为
     // 上传初始化
        su.initialize(getServletConfig(),request,response);


    截取同表单一起传过来的表单元素.并使其成中文.
    operStr =new String(su.getRequest().getParameter("act").getBytes("GBK"),"gb2312");

    下载出错:getWriter() has already been called  的解决方法
    1.必须用SERVLET下载.
    2.//    PrintWriter out = response.getWriter();令这一行失效.
    分析:个人认为,因为在组件中,已经打开过一次response.getWriter了.所以再次打开
              时会出现调用重复的现象.于是出错!!!

    解决方法:如果要在页面打印出错信息,可将PrintWriter out = response.getWriter();设

                      成局部变量.例:.....catch(...){PrintWriter out = response.getWriter();}如果不用,则可以不设. 





  • 相关阅读:
    团队作业第五次——Alpha冲刺
    Alpha冲刺——总结
    冲刺随笔
    冲刺随笔——Day_Nine
    冲刺随笔——Day_Eight
    冲刺随笔——Day_Seven
    冲刺随笔——Day_Three
    团队作业第五次——Alpha冲刺
    第06组 Alpha冲刺(1/6)
    第06组 团队Git现场编程实战
  • 原文地址:https://www.cnblogs.com/macula/p/2143985.html
Copyright © 2011-2022 走看看