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
<%@ 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组件实现的更多相关文章
- 2013第38周日Java文件上传下载收集思考
2013第38周日Java文件上传&下载收集思考 感觉文件上传及下载操作很常用,之前简单搜集过一些东西,没有及时学习总结,现在基本没啥印象了,今天就再次学习下,记录下自己目前知识背景下对该类问 ...
- Java文件上传下载原理
文件上传下载原理 在TCP/IP中,最早出现的文件上传机制是FTP.它是将文件由客户端发送到服务器的标准机制. 但是在jsp编程中不能使用FTP方法来上传文件,这是由jsp运行机制所决定的 文件上传原 ...
- java文件上传下载组件
需求: 支持大文件批量上传(20G)和下载,同时需要保证上传期间用户电脑不出现卡死等体验: 内网百兆网络上传速度为12MB/S 服务器内存占用低 支持文件夹上传,文件夹中的文件数量达到1万个以上,且包 ...
- java文件上传下载
文件上传首先要引入两个核心包 commons-fileupload-1.2.1.jar commons-io-1.4.jar 下面是对文件上传和下载的一些代码做的一个简单封装,可以方便以后直接使用[使 ...
- java 文件上传 下载 总结
首先引入2个jar  String pat ...
- java文件上传下载解决方案
javaweb上传文件 上传文件的jsp中的部分 上传文件同样可以使用form表单向后端发请求,也可以使用 ajax向后端发请求 1.通过form表单向后端发送请求 <form id=" ...
- [Java] 文件上传下载项目(详细注释)
先上代码,最上方注释是文件名称(运行时要用到) FTServer.java /* FTServer.java */ import java.util.*; import java.io.*; publ ...
- [java]文件上传下载删除与图片预览
图片预览 @GetMapping("/image") @ResponseBody public Result image(@RequestParam("imageName ...
随机推荐
- Linux 修改hostname几种方式
1: hostname DB-Server --运行后立即生效(新会话生效),但是在系统重启后会丢失所做的修改 2: echo DB-Server > /proc/sys ...
- 谈谈CS英文论文写作
作为一个CS的研究生,发篇文章是你毕业的必要条件.现如今,学校对于文章的要求也越来越高,一般来说,还是国外的期刊或者会议更加受到认可,这样对于毕业也有好处.因此,以我自己的感受来说,论文的写作以及表达 ...
- 发现一个好的后台模板 xtreme admin
Xtreme Admin Dashboard 是基于 bootstrap 4 的管理仪表板和控制管理面板. Xtreme 是完全响应的 HTML 模板,基于 CSS 框架 Bootstrap 4 并基 ...
- Storm分布式集群搭建
一.storm版本 选用storm0.9.6 二.本地模式 用于对storm业务逻辑的调试和测试,可以直接在本地运行. 三.分布式模式 生产环境,需要对应的zookeeper.nimbus.super ...
- 2018-11-15-UWP-how-to-get-the-touch-width
title author date CreateTime categories UWP how to get the touch width lindexi 2018-11-15 18:49:12 + ...
- JSP学习(4)
JSP学习(4) JavaBean简介 符合某种规范的Java类.使用JavaBean的好处是解决了代码重复编写,减少代码冗余,功能区分明确,提高代码的可维护性 JavaBean设计原则 JSP动作元 ...
- dotnet ef执行报错, VS 2019发布时配置项中的Entity Framework迁移项显示不出来
VS 2019发布时配置项中的Entity Framework迁移项显示不出来 dotnet ef dbcontext list --json “无法执行,因为找不到指定的命令或文件.可能的原因包括: ...
- 02.Windows2012R2安装360安全卫士失败及无法卸载问题
问题: Windows 2012 R2 安装360安全卫士失败及无法卸载,导致网络无法通信问题解决. 解决:1.进入 Windows2012R2 安全模式下:2.进行覆盖安装360安全卫士:3.覆盖安 ...
- 优化Nginx并发访问量
通过修改Nginx配置文件,优化linux内核参数,实现高并发测试. 1.优化前使用ab高并发测试 [root@proxy ~]# ab -n 2000 -c 2000 http://192.168. ...
- 02机器学习实战之K近邻算法
第2章 k-近邻算法 KNN 概述 k-近邻(kNN, k-NearestNeighbor)算法是一种基本分类与回归方法,我们这里只讨论分类问题中的 k-近邻算法. 一句话总结:近朱者赤近墨者黑! k ...