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

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

2、创建jsp文件 01.jsp

3、编写jsp

 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<html>
<head>
<base href="<%=basePath%>">
<title>My JSP '01.jsp' starting page</title>
<!-- 引入我们css样式文件 -->
<link rel="stylesheet" type="text/css" href="css/common.css">
<!-- 引入我们js文件 -->
<script type="text/javascript" src="js/jquery-1.11.1.js"></script>
<script type="text/javascript">
/*
替换默认显示图片,显示当前我们选中的图片
1、获取<p class="thumbs">中<a>标签事件
2、获取href title
3、获取<p><img id="largeImg"</p>
4、把当前选中的href title赋给默认
*/
$(function(){
$(".thumbs a").click(function(){
var largePath = $(this).attr("href");
var largeAlt = $(this).attr("title");
$("#largeImg").attr({
src:largePath,
alt:largeAlt
});
return false;
});
}); </script>
</head> <body>
<h2>文件批量上传</h2>
<!-- 处理类路径,提交方式,类型 -->
<form action="smartUploadServlet.do" method="post" enctype="multipart/form-data">
<label>文件一:</label>
<input name="myfile1" type="file"/><br>
<label>文件二:</label>
<input name="myfile2" type="file"/><br>
<label>文件三:</label>
<input name="myfile3" type="file"/><br>
<!-- 处理完后台返回一个消息同el表达式${result} -->
<input type="submit" value="上传文件"/><b style="color: red">${result}</b>
</form>
<hr> <h2>文件批量下载</h2>
<!-- 处理类路径 -->
<form action="batchDownloadServlet.do">
<input type="checkbox" name="filename" value="img2-lg.jpg"/>Image2
<input type="checkbox" name="filename" value="img3-lg.jpg"/>Image3
<input type="checkbox" name="filename" value="img4-lg.jpg"/>Image4
<input type="submit" value="下载文件"/>
</form>
      <!--
下载:<input type="file" name="filename" value="img2-lg.jpg"/>Image2
   -->
<hr> <h2>图片预览</h2>
<p><img id="largeImg" alt="Large Image" src="data:images/img1-lg.jpg"></p>
<p class="thumbs">
<a href="images/img2-lg.jpg" title="Image2"><img src="data:images/img2-thumb.jpg"></a>
<a href="images/img3-lg.jpg" title="Image3"><img src="data:images/img3-thumb.jpg"></a>
<a href="images/img4-lg.jpg" title="Image4"><img src="data:images/img4-thumb.jpg"></a>
<a href="images/img5-lg.jpg" title="Image5"><img src="data:images/img5-thumb.jpg"></a>
<a href="images/img6-lg.jpg" title="Image6"><img src="data:images/img6-thumb.jpg"></a>
</p>
</body>
</html>

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

 <?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee"
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">
<display-name>scx</display-name> <servlet>
<servlet-name>SmartUploadServlet</servlet-name>
<servlet-class>com.imooc.servlet.SmartUploadServlet</servlet-class>
</servlet> <servlet>
<servlet-name>SmartDownloadServlet</servlet-name>
<servlet-class>com.imooc.servlet.SmartDownloadServlet</servlet-class>
</servlet>
<servlet>
<servlet-name>BatchDownloadServlet</servlet-name>
<servlet-class>com.imooc.servlet.BatchDownloadServlet</servlet-class>
</servlet> <servlet-mapping>
<servlet-name>SmartUploadServlet</servlet-name>
<url-pattern>/smartUploadServlet.do</url-pattern>
</servlet-mapping> <servlet-mapping>
<servlet-name>SmartDownloadServlet</servlet-name>
<url-pattern>/smartDownloadServlet.do</url-pattern>
</servlet-mapping> <servlet-mapping>
<servlet-name>BatchDownloadServlet</servlet-name>
<url-pattern>/batchDownloadServlet.do</url-pattern>
</servlet-mapping> <welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>

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

 package com.imooc.servlet;

 import java.io.File;
import java.io.IOException; import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import com.jspsmart.upload.SmartUpload; public class SmartUploadServlet extends HttpServlet { /**
*
*/
private static final long serialVersionUID = 1L; public void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doPost(req, resp);
} public void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { req.setCharacterEncoding("UTF-8");
// 设置上传的保存路径
String filePath = getServletContext().getRealPath("/") + "images";
// 创建文件对象 如果存在就不创建,否则创建文件夹
File file = new File(filePath);
if (file.exists()) {
file.mkdir();
}
// 创建SmartUpload对象
SmartUpload su = new SmartUpload();
// 初始化对象
su.initialize(getServletConfig(), req, resp);
// 设置上传文件大小
su.setTotalMaxFileSize(1024 * 1024 * 100);
// 设置上传文件类型
su.setAllowedFilesList("txt,jpg,gif");
// 创建提示变量
String result = "上传成功";
try {
// 设置禁止上传类型
su.setDeniedFilesList("rar,jsp,js");
su.upload();
// 返回上传文件数量
int count = su.save(filePath);
System.out.println("上传成功" + count + "个文件!"); } catch (Exception e) {
result = "上传失败";
e.printStackTrace();
} // 获取上传成功的文件的属性
for (int i = 0; i < su.getFiles().getCount(); i++) {
com.jspsmart.upload.File tempFile = su.getFiles().getFile(i);
System.out.println("---------------------");
System.out.println("表单当中name属性值:" + tempFile.getFieldName());
System.out.println("上传文件名:" + tempFile.getFieldName());
System.out.println("上传文件长度:" + tempFile.getSize());
System.out.println("上传文件的拓展名:" + tempFile.getFileExt());
System.out.println("上传文件的全名:" + tempFile.getFilePathName());
System.out.println("---------------------");
}
req.setAttribute("result", result);
req.getRequestDispatcher("jsp/01.jsp").forward(req, resp);
} } 6、SmartDownloadServlet(单个下载)
 package com.imooc.servlet;

 import java.io.IOException;

 import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import com.jspsmart.upload.SmartUpload;
import com.jspsmart.upload.SmartUploadException; public class SmartDownloadServlet extends HttpServlet { /**
*
*/
private static final long serialVersionUID = 1L; public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request, response);
} public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 获取文件名称
String filename = request.getParameter("filename");
SmartUpload su = new SmartUpload();
// 初始化
su.initialize(getServletConfig(), request, response);
// 把默认显示方式设为空
su.setContentDisposition(null); try {
su.downloadFile("/images/" + filename);
} catch (SmartUploadException e) {
e.printStackTrace();
}
}
}
7、BatchDownloadServlet(多个文件下载)
 package com.imooc.servlet;

 import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream; import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; public class BatchDownloadServlet extends HttpServlet { /**
*
*/
private static final long serialVersionUID = 1L; public void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doPost(req, resp);
} public void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
resp.setContentType("application/x-msdownload");
// 以附件的形式下载
resp.setHeader("Content-Disposition", "attachment;filename=test.zip"); // 获取下载路径
String path = getServletContext().getRealPath("/") + "images/";
// 获取文件数组
String[] filenames = req.getParameterValues("filename");
// 创建空字符串
String str = "";
// 换行符
String rt = "\r\n";
// 创建压缩包输出流
ZipOutputStream zos = new ZipOutputStream(resp.getOutputStream());
// 遍历文件数组
for (String filename : filenames) {
str += filename + rt;
// 创建文件对象
File file = new File(path + filename);
zos.putNextEntry(new ZipEntry(filename));
// 创建文件输出流
FileInputStream fis = new FileInputStream(file);
byte[] b = new byte[1024];
int n = 0;
while ((n = fis.read(b)) != -1) {
zos.write(b, 0, n);
}
zos.flush();
fis.close();
}
zos.setComment("成功" + rt + str);
zos.flush();
zos.close();
}
} 效果图


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

  1. 2013第38周日Java文件上传下载收集思考

    2013第38周日Java文件上传&下载收集思考 感觉文件上传及下载操作很常用,之前简单搜集过一些东西,没有及时学习总结,现在基本没啥印象了,今天就再次学习下,记录下自己目前知识背景下对该类问 ...

  2. Java文件上传下载原理

    文件上传下载原理 在TCP/IP中,最早出现的文件上传机制是FTP.它是将文件由客户端发送到服务器的标准机制. 但是在jsp编程中不能使用FTP方法来上传文件,这是由jsp运行机制所决定的 文件上传原 ...

  3. java文件上传下载组件

    需求: 支持大文件批量上传(20G)和下载,同时需要保证上传期间用户电脑不出现卡死等体验: 内网百兆网络上传速度为12MB/S 服务器内存占用低 支持文件夹上传,文件夹中的文件数量达到1万个以上,且包 ...

  4. java文件上传下载

    文件上传首先要引入两个核心包 commons-fileupload-1.2.1.jar commons-io-1.4.jar 下面是对文件上传和下载的一些代码做的一个简单封装,可以方便以后直接使用[使 ...

  5. java 文件上传 下载 总结

    首先引入2个jar ![](http://images2017.cnblogs.com/blog/1128666/201711/1128666-20171101145630498-2084371020 ...

  6. java 文件上传下载

    翻新十年前的老项目,文件上传改为调用接口方式,记录一下子~~~ java后台代码: //取配置文件中的上传目录 @Value("${uploadPath}") String pat ...

  7. java文件上传下载解决方案

    javaweb上传文件 上传文件的jsp中的部分 上传文件同样可以使用form表单向后端发请求,也可以使用 ajax向后端发请求 1.通过form表单向后端发送请求 <form id=" ...

  8. [Java] 文件上传下载项目(详细注释)

    先上代码,最上方注释是文件名称(运行时要用到) FTServer.java /* FTServer.java */ import java.util.*; import java.io.*; publ ...

  9. [java]文件上传下载删除与图片预览

    图片预览 @GetMapping("/image") @ResponseBody public Result image(@RequestParam("imageName ...

随机推荐

  1. 省流量 转:http://www.wtoutiao.com/p/T3b8it.html

    前言:“客户端上传时间戳”的玩法,你玩过么?一起聊聊时间戳的奇技淫巧! 缘起:无线时代,流量敏感.APP在登录后,往往要向服务器同步非常多的数据,很费流量,技术上有没有节省流量的方法呢?这是本文要讨论 ...

  2. js中对象的属性名和属性值

    代码 /** * 对象的属性名 * - 对象的属性名不强制遵循标识符的命名规范,可以是任意的名字,但在开发中 * 尽量遵循标识符的命名规范 */ // 创建对象obj1 var obj1 = new ...

  3. Vue实现点击li变色

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...

  4. [翻译]解释JavaScript中的类型转换

    原文地址:JavaScript type coercion explained 类型转换是将值从一种类型转换为另一种类型的过程(比如字符串转换为数值,对象转换为布尔值,等等).任何类型,无论是原始类型 ...

  5. JSP2的自定义标签和方法

    Jsp2的自定义标签 Jsp2 开发标签库的几个步骤: 开发自定义标签处理类. 建立一个*.tld文件,每个tld文件对应一个标签库,每个标签库可对应多个标签. 在jsp文件中使用自定义标签 空标签 ...

  6. ffmpeg知多少~~~

    一.ffmpeg安装: https://jingyan.baidu.com/article/f7ff0bfcd64cea2e26bb1334.html   二.ffmpeg视频处理(包括各种视频流处理 ...

  7. 手工实现hashset

    package cn.study.lu.four; import java.util.*; /** * 手工实现hashmap,加深理解底层原理 * @author Administrator * * ...

  8. python 小工具 重命名当前文件夹内所有的文件,升序命名

    背景:一个朋友想升序重命名他的照片,但是太多了不想手动所以,emememem os这个模块,不用说,rename,filedir等 #conding=utf8 import os path = os. ...

  9. python类对象属性查找原理

    class Foo(object): def __init__(self): # 这是一个对象属性 self.obj_pro = 12 # 这是一类属性 c_pro = 11 # 这是一个静态方法 @ ...

  10. Docker Toolbox 学习教程【转载】

    最近在研究虚拟化,容器和大数据,所以从Docker入手,下面介绍一下在Windows下怎么玩转Docker.Docker本身在Windows下有两个软件,一个就是Docker,另一个是Docker T ...