java文件上传下载 使用SmartUpload组件实现

使用SmartUpload组件实现(下载jsmartcom_zh_CN.jar) 2017-11-07

1、在WebRoot创建以下文件夹,css存放样式文件(css文件直接拷贝进去),images存放图片(图片也拷贝进去),js存放js文件(拷贝),jsp存放我们的jsp文件

2、创建jsp文件 01.jsp

3、编写jsp

 1 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
 2 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 3 <%
 4 String path = request.getContextPath();
 5 String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
 6 %>
 7 <html>
 8   <head>
 9     <base href="<%=basePath%>">
10     <title>My JSP ‘01.jsp‘ starting page</title>
11     <!-- 引入我们css样式文件 -->
12     <link rel="stylesheet" type="text/css" href="css/common.css">
13     <!-- 引入我们js文件 -->
14     <script type="text/javascript" src="js/jquery-1.11.1.js"></script>
15     <script type="text/javascript">
16         /*
17             替换默认显示图片,显示当前我们选中的图片
18             1、获取<p class="thumbs">中<a>标签事件
19             2、获取href title
20             3、获取<p><img id="largeImg"</p>
21             4、把当前选中的href title赋给默认
22         */
23         $(function(){
24             $(".thumbs a").click(function(){
25                 var largePath = $(this).attr("href");
26                 var largeAlt = $(this).attr("title");
27                 $("#largeImg").attr({
28                     src:largePath,
29                     alt:largeAlt
30                 });
31                 return false;
32             });
33         });
34
35     </script>
36   </head>
37
38   <body>
39         <h2>文件批量上传</h2>
40         <!-- 处理类路径,提交方式,类型 -->
41         <form action="smartUploadServlet.do" method="post" enctype="multipart/form-data">
42             <label>文件一:</label>
43             <input name="myfile1" type="file"/><br>
44             <label>文件二:</label>
45             <input name="myfile2" type="file"/><br>
46             <label>文件三:</label>
47             <input name="myfile3" type="file"/><br>
48             <!-- 处理完后台返回一个消息同el表达式${result} -->
49             <input type="submit" value="上传文件"/><b style="color: red">${result}</b>
50         </form>
51         <hr>
52
53         <h2>文件批量下载</h2>
54         <!-- 处理类路径 -->
55         <form action="batchDownloadServlet.do">
56             <input type="checkbox" name="filename" value="img2-lg.jpg"/>Image2
57             <input type="checkbox" name="filename" value="img3-lg.jpg"/>Image3
58             <input type="checkbox" name="filename" value="img4-lg.jpg"/>Image4
59             <input type="submit" value="下载文件"/>
60         </form>      <!--                 下载:<input type="file" name="filename" value="img2-lg.jpg"/>Image2         -->
61         <hr>
62
63         <h2>图片预览</h2>
64         <p><img id="largeImg" alt="Large Image" src="images/img1-lg.jpg"></p>
65         <p class="thumbs">
66             <a href="images/img2-lg.jpg" title="Image2"><img src="images/img2-thumb.jpg"></a>
67             <a href="images/img3-lg.jpg" title="Image3"><img src="images/img3-thumb.jpg"></a>
68             <a href="images/img4-lg.jpg" title="Image4"><img src="images/img4-thumb.jpg"></a>
69             <a href="images/img5-lg.jpg" title="Image5"><img src="images/img5-thumb.jpg"></a>
70             <a href="images/img6-lg.jpg" title="Image6"><img src="images/img6-thumb.jpg"></a>
71         </p>
72   </body>
73 </html>

4、后台创建SmartUploadServlet(上传)   web.xml配置路径,jsp文件中<form action="smartUploadServlet.do">必须和web.xml中一致

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 3 xmlns="http://java.sun.com/xml/ns/javaee"
 4 xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
 5   <display-name>scx</display-name>
 6
 7   <servlet>
 8     <servlet-name>SmartUploadServlet</servlet-name>
 9     <servlet-class>com.imooc.servlet.SmartUploadServlet</servlet-class>
10   </servlet>
11
12   <servlet>
13     <servlet-name>SmartDownloadServlet</servlet-name>
14     <servlet-class>com.imooc.servlet.SmartDownloadServlet</servlet-class>
15   </servlet>
16   <servlet>
17     <servlet-name>BatchDownloadServlet</servlet-name>
18     <servlet-class>com.imooc.servlet.BatchDownloadServlet</servlet-class>
19   </servlet>
20
21   <servlet-mapping>
22     <servlet-name>SmartUploadServlet</servlet-name>
23     <url-pattern>/smartUploadServlet.do</url-pattern>
24   </servlet-mapping>
25
26   <servlet-mapping>
27     <servlet-name>SmartDownloadServlet</servlet-name>
28     <url-pattern>/smartDownloadServlet.do</url-pattern>
29   </servlet-mapping>
30
31   <servlet-mapping>
32     <servlet-name>BatchDownloadServlet</servlet-name>
33     <url-pattern>/batchDownloadServlet.do</url-pattern>
34   </servlet-mapping>
35
36   <welcome-file-list>
37     <welcome-file>index.jsp</welcome-file>
38   </welcome-file-list>
39 </web-app>

5、编写SmartUploadServlet(多个上传,单个上传只需要把jsp文件中input留下一个)

 1 package com.imooc.servlet;
 2
 3 import java.io.File;
 4 import java.io.IOException;
 5
 6 import javax.servlet.ServletException;
 7 import javax.servlet.http.HttpServlet;
 8 import javax.servlet.http.HttpServletRequest;
 9 import javax.servlet.http.HttpServletResponse;
10
11 import com.jspsmart.upload.SmartUpload;
12
13 public class SmartUploadServlet extends HttpServlet {
14
15     /**
16      *
17      */
18     private static final long serialVersionUID = 1L;
19
20     public void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
21         doPost(req, resp);
22     }
23
24     public void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
25
26         req.setCharacterEncoding("UTF-8");
27         // 设置上传的保存路径
28         String filePath = getServletContext().getRealPath("/") + "images";
29         // 创建文件对象 如果存在就不创建,否则创建文件夹
30         File file = new File(filePath);
31         if (file.exists()) {
32             file.mkdir();
33         }
34         // 创建SmartUpload对象
35         SmartUpload su = new SmartUpload();
36         // 初始化对象
37         su.initialize(getServletConfig(), req, resp);
38         // 设置上传文件大小
39         su.setTotalMaxFileSize(1024 * 1024 * 100);
40         // 设置上传文件类型
41         su.setAllowedFilesList("txt,jpg,gif");
42         // 创建提示变量
43         String result = "上传成功";
44         try {
45             // 设置禁止上传类型
46             su.setDeniedFilesList("rar,jsp,js");
47             su.upload();
48             // 返回上传文件数量
49             int count = su.save(filePath);
50             System.out.println("上传成功" + count + "个文件!");
51
52         } catch (Exception e) {
53             result = "上传失败";
54             e.printStackTrace();
55         }
56
57         // 获取上传成功的文件的属性
58         for (int i = 0; i < su.getFiles().getCount(); i++) {
59             com.jspsmart.upload.File tempFile = su.getFiles().getFile(i);
60             System.out.println("---------------------");
61             System.out.println("表单当中name属性值:" + tempFile.getFieldName());
62             System.out.println("上传文件名:" + tempFile.getFieldName());
63             System.out.println("上传文件长度:" + tempFile.getSize());
64             System.out.println("上传文件的拓展名:" + tempFile.getFileExt());
65             System.out.println("上传文件的全名:" + tempFile.getFilePathName());
66             System.out.println("---------------------");
67         }
68         req.setAttribute("result", result);
69         req.getRequestDispatcher("jsp/01.jsp").forward(req, resp);
70     }
71
72 }

6、SmartDownloadServlet(单个下载)
 1 package com.imooc.servlet;
 2
 3 import java.io.IOException;
 4
 5 import javax.servlet.ServletException;
 6 import javax.servlet.http.HttpServlet;
 7 import javax.servlet.http.HttpServletRequest;
 8 import javax.servlet.http.HttpServletResponse;
 9
10 import com.jspsmart.upload.SmartUpload;
11 import com.jspsmart.upload.SmartUploadException;
12
13 public class SmartDownloadServlet extends HttpServlet {
14
15     /**
16      *
17      */
18     private static final long serialVersionUID = 1L;
19
20     public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
21         doPost(request, response);
22     }
23
24     public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
25         // 获取文件名称
26         String filename = request.getParameter("filename");
27         SmartUpload su = new SmartUpload();
28         // 初始化
29         su.initialize(getServletConfig(), request, response);
30         // 把默认显示方式设为空
31         su.setContentDisposition(null);
32
33         try {
34             su.downloadFile("/images/" + filename);
35         } catch (SmartUploadException e) {
36             e.printStackTrace();
37         }
38     }
39 }7、BatchDownloadServlet(多个文件下载)
 1 package com.imooc.servlet;
 2
 3 import java.io.File;
 4 import java.io.FileInputStream;
 5 import java.io.IOException;
 6 import java.util.zip.ZipEntry;
 7 import java.util.zip.ZipOutputStream;
 8
 9 import javax.servlet.ServletException;
10 import javax.servlet.http.HttpServlet;
11 import javax.servlet.http.HttpServletRequest;
12 import javax.servlet.http.HttpServletResponse;
13
14 public class BatchDownloadServlet extends HttpServlet {
15
16     /**
17      *
18      */
19     private static final long serialVersionUID = 1L;
20
21     public void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
22         doPost(req, resp);
23     }
24
25     public void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
26         resp.setContentType("application/x-msdownload");
27         // 以附件的形式下载
28         resp.setHeader("Content-Disposition", "attachment;filename=test.zip");
29
30         // 获取下载路径
31         String path = getServletContext().getRealPath("/") + "images/";
32         // 获取文件数组
33         String[] filenames = req.getParameterValues("filename");
34         // 创建空字符串
35         String str = "";
36         // 换行符
37         String rt = "\r\n";
38         // 创建压缩包输出流
39         ZipOutputStream zos = new ZipOutputStream(resp.getOutputStream());
40         // 遍历文件数组
41         for (String filename : filenames) {
42             str += filename + rt;
43             // 创建文件对象
44             File file = new File(path + filename);
45             zos.putNextEntry(new ZipEntry(filename));
46             // 创建文件输出流
47             FileInputStream fis = new FileInputStream(file);
48             byte[] b = new byte[1024];
49             int n = 0;
50             while ((n = fis.read(b)) != -1) {
51                 zos.write(b, 0, n);
52             }
53             zos.flush();
54             fis.close();
55         }
56         zos.setComment("成功" + rt + str);
57         zos.flush();
58         zos.close();
59     }
60 }

效果图

				
时间: 2024-11-05 16:30:39

java文件上传下载 使用SmartUpload组件实现的相关文章

28、java文件上传下载、邮件收发

文件上传下载 前台: 1. 提交方式:post 2. 表单中有文件上传的表单项: <input type="file" /> 3. 指定表单类型: 默认类型:enctype="application/x-www-form-urlencoded" 文件上传类型:multipart/form-data FileUpload 文件上传功能开发中比较常用,apache也提供了文件上传组件! FileUpload组件: 1. 下载源码 2. 项目中引入jar文件

java文件上传下载

文件上传首先要引入两个核心包 commons-fileupload-1.2.1.jar commons-io-1.4.jar 下面是对文件上传和下载的一些代码做的一个简单封装,可以方便以后直接使用[使用时将封装好的jar包直接导入工程中即可使用] 上传文件核心代码 1 package com.lizhou.fileload; 2 3 import java.io.File; 4 import java.io.FileOutputStream; 5 import java.io.IOExcepti

java 文件上传下载--基于ajaxFileUpload+struts2

jQuery插件ajaxFileUpload可以实现ajax文件上传,使用非常简单. 下面做一个简单的demo(以上传图片为例),实现图片上传,图片显示,图片下载 注:以下的代码是在项目的基础上进行开发.css样式文件.包路径等未做修改. 1. ajaxFileUpload文件下载地址http://www.phpletter.com/Demo/AjaxFileUpload-Demo/ 2.自行引入jquery.js.ajaxFileUpload.js文件 jsp核心代码: [html] view

java web 文件上传下载

文件上传下载案例: 首先是此案例工程的目录结构: 处理上传: FileUploadServlet.java 1 package fnz.fileUploadTest; 2 3 import java.io.File; 4 import java.io.IOException; 5 import java.io.InputStream; 6 import java.io.PrintWriter; 7 import java.text.SimpleDateFormat; 8 import java.

JSP文件上传下载组件(2)

实现文件下载 1.新建一个SmartUpload对象 SmartUpload su = new SmartUpload(); 2.初始化 su.initialize(pageContext); 3.设定contentDisposition为null,以禁止浏览器自动打开文件,保证单机链接后是下载文件,若不设定,浏览器会自动打开它 su.setContentDisposition(null); 4.下载文件su.download("xxx"); JSP文件上传下载组件(2)

JSP文件上传下载组件(1)

使用jspSmartUpload可以实现文件上传和下载 jspSmartUpload组件主要有4个类:File类,Files类,Request类和SmartUpload类 *SmartUpload类的initialize方法:这个方法是上传和下载共用的方法,他的作用是执行上传和下载的初始化工作,必须第一个执行.原型有多个,主要使用下面这个: public final void initialize(javax.serlvet.jsp.PageContext pageContext) 其中,pag

基于Java的一个简单的文件上传下载功能

最近在公司给客户端做接口,有一个图片上传和文件下载的功能,本来想用Struts来做文件上传下载,但是看了下公司好像没有这个配置,然后看了下同事的代码,才发现原来Apache也可以简单的实现文件上传下载. 首先引入commons-io-2.2.jar FileUtils为我们提供了很多对文件的操作的方法,比如上传整个文件夹的文件.上传单个文件等 然后请看代码下载: public static void uploadFile(String targetDirectory,String targetF

文件上传下载—servlet API实现

servlet API实现文件上传下载需要的jar包: UploadServlet.java package com.ymw.web.servlet; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.util.List; import java.util.UUID; import javax.servl

SpringMVC文件上传下载

在Spring MVC的基础框架搭建起来后,我们测试了spring mvc中的返回值类型,如果你还没有搭建好springmvc的架构请参考博文->http://www.cnblogs.com/qixiaoyizhan/p/5819392.html 今天我们来讲讲spring mvc中的文件上传和下载的几种方法. 首先附上文件目录->我们需要配置的我做了记号-> 一.文件上传 首先为了方便后续的操作,以及精简代码,我们在Utils包下封装一个文件上传下载的帮助类: Files_Helper