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 ...
随机推荐
- 左侧点击后右侧添加tab标签栏以及内容
<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title&g ...
- ftp服务端
#coding=utf-8 import SocketServer import json import os class MyTcpHandler(SocketServer.BaseRequestH ...
- C#中的==和Equals的区别
一,值类型中的比较,对于值类型,如果对象的值相等,则相等运算符 (==) 返回 true,否则返回 false. ; ; bool bi1 = ai.Equals(bi); //true bool b ...
- .NET基础篇——利用泛型与反射更新实体(ADO.NET Entity Framework)(转)
自从ADO.NET Entity Framework面世以来,受到大家的热捧,它封装了大量代码生成的工具,用户只需要建立好实体之间的关系,系统就是会为用户自动成功了Add.Delete.CreateO ...
- 二、Rabbit使用-初次测试
RabbitMQ提供了后台管理的页面,如果想使用该页面,需要进入安装rabbitmq的安装目录,运行以下cmd命令 rabbitmq-plugins enable rabbitmq_managemen ...
- FM
1.FM (因子分解机) 2.FM的作用: (1)特征组合是许多机器学习建模过程中遇到的问题,如果对特征直接进行建模,很可能会忽略掉特征与特征之间的关联信息,因此,可以通过构建新的交叉特征这一特征组合 ...
- python笔记(1)--基础知识
一.注释 单行注释 #打印“hello world” print("hello.world!") 另外一种单行注释 print("hello,world!") ...
- 插头$DP$学习小结
插头\(DP\)学习小结 这种辣鸡毒瘤东西也能叫算法... 很优秀的一个算法. 最基本的适用范围主要是数据范围极小的网格图路径计数问题. 如果是像\(Noi2018\)那种的话建议考生在其他两道题难度 ...
- mybaties数据源配置类型(POOLED、JNDI、UNPOOLED)
dataSource的类型可以配置成其内置类型之一,如UNPOOLED.POOLED.JNDI. 如果将类型设置成UNPOOLED,mybaties会为每一个数据库操作创建一个新的连接,并关闭它.该方 ...
- 2020年的ARM处理器将超越英特尔
2020年ARM真的会超越英特尔成为世界芯片霸主吗?迄今为止,基于ARM的笔记本电脑一直很流行,但在一两年内你可能会对它们产生不同的印象.该公司对其未来的处理器架构的性能预期提供了一个罕见的看法,这些 ...