Java 的 SmartUpload实现文件(上传-下载) 《一抹茶-CSDN》

servlet实现SmartUpload文件上传下载

  1. 什么是SmartUpload?
    SmartUpload组件是应用JSP进行B/S程序开发过程中经常使用的上传下载组件,它使用简单,方便。

使用方法

准备:
1.下载架包:
jspSmartUpload.jar 下载
2. 使用架包
新建一个项目
在这里插入图片描述
把架包放入lib目录下:
在这里插入图片描述
?接下来是正式使用了

1.文件上传:

编写前端页面:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>文件上传</title>
</head>
<body>
<form action="smartUploadUpServlet" method="post" enctype="multipart/form-data">
	上传文件1:<input type="file" name="file1" ><br>
	上传文件2:<input type="file" name="file2" ><br>
	上传文件3:<input type="file" name="file3" ><br>
	<input type="submit" value="上传">${result }
</form>
</body>
</html>

servlet

package com.yimocha.servlet;

import java.io.File;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
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;

/**
 * Servlet implementation class SmartUploadUpServlet
 */
@WebServlet("/smartUploadUpServlet")
public class SmartUploadUpServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		doPost(request, response);
	}

	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// 设置上传文件保存路径
		String filePath = "E:\\img";
		File file = new File(filePath);
		if (!file.exists()) {
			file.mkdirs(); // 创建文件路径
		}
		
		SmartUpload sUpload = new SmartUpload(); // 创建文件上传对象
		sUpload.initialize(getServletConfig(), request, response); // 初始化SmartUpload对象
		sUpload.setMaxFileSize(1024*1024*10);	// 设置单个文件上传大小
		sUpload.setTotalMaxFileSize(1024*1024*100);	// 设置总上传文件大小
		sUpload.setAllowedFilesList("jpg,png,txt");	// 设置允许上传文件类型
		String result = "上传成功! ";
		
		try {
			sUpload.upload();	// 上传文件
			// 保存文件到指定目录-并返回保存数量
			int count = sUpload.save(filePath);
			result += count + "个文件!";
			System.out.println("上传成功!" + count + "个文件!");
		} catch (SmartUploadException e) {
			result = "上传失败! ";
			if (e.getMessage().indexOf("1015") != -1) { // 允许上传文件文件类型
				result = "上传失败:上传文件类型不正确! ";
			} else if (e.getMessage().indexOf("1010") != -1) { // 不允许上传文件类型
				result = "上传失败:上传文件类型不正确! ";
			} else if (e.getMessage().indexOf("1105") != -1) { // 上传文件的大小
				result = "上传失败:上传文件大小大于允许上传的最大值! ";
			} else if (e.getMessage().indexOf("1110") != -1) { // 上传文件总大小
				result = "上传失败:上传文件总大小大于允许上传的最大值! ";
			}
			e.printStackTrace();
		}
		
		for (int i = 0; i < sUpload.getFiles().getCount(); i++) {
			com.jspsmart.upload.File tempFile = sUpload.getFiles().getFile(i);
			System.out.println("---------------------------");
			System.out.println("表单中name的值:" + tempFile.getFieldName());
			System.out.println("上传文件名:" + tempFile.getFileName());
			System.out.println("上传文件的大小:" + tempFile.getSize());
			System.out.println("上传文件的拓展名:" + tempFile.getFileExt());
			System.out.println("上传文件的全名:" + tempFile.getFilePathName());
		}

		request.setAttribute("result", result);
		request.getRequestDispatcher("upload01.jsp").forward(request, response);
	}

}

运行结果:
1.选择图片
在这里插入图片描述
2.上传
在这里插入图片描述
3.上传成功,查看目录
在这里插入图片描述

2.单文件下载:

编写前端页面:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>单文件下载</title>
</head>
<body>
下载:<a href="smartUploadDownloadServlet?filename=01.jpg">01.jpg</a>
</body>
</html>

servlet

package com.yimocha.servlet;

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
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;

/**
 * Servlet implementation class SmartUploadDownloadServlet
 */
@WebServlet("/smartUploadDownloadServlet")
public class SmartUploadDownloadServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
	
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		doPost(request, response);
	}

	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		String filename = request.getParameter("filename");	// 获取要下载的文件名
		String downloadPath = "E:\\img\\"; // 下载路径
		SmartUpload sUpload = new SmartUpload();	// 实例化SmartUpload对象
		sUpload.initialize(getServletConfig(), request, response);	// 初始化SmartUpload对象
		
		sUpload.setContentDisposition(null); // 使用浏览器下载方式
		try {
			sUpload.downloadFile(downloadPath+filename); // 下载文件
		} catch (SmartUploadException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
	}

}

运行结果:
1.下载
在这里插入图片描述
2.查看是否下载成功----下载成功!
在这里插入图片描述

4.多文件打包下载:

编写前端页面:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>多文件打包下载</title>
</head>
<body>
	<h1>多文件打包下载</h1>
	<form action="BatchDownloadServlet" method="post">
	<input type="checkbox" name="filename" value="01.jpg">01.jpg
	<input type="checkbox" name="filename" value="02.jpg">02.jpg
	<input type="checkbox" name="filename" value="03.jpg">03.jpg<br>
	<input type="submit" value="下载">
	</form>
</body>
</html>

servlet

package com.yimocha.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.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * Servlet implementation class BatchDownloadServlet
 */
@WebServlet("/BatchDownloadServlet")
public class BatchDownloadServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;

	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		doPost(request, response);
	}

	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// 设置响应头
		response.setContentType("application/x-msdownload");
		response.setHeader("Content-Disposition", "attachment;filename=download.zip");
		
		String path = "E:\\img\\";	// 下载路径
		String[] filenames = request.getParameterValues("filename"); // 获取要下载的文件数组
		String str = "";
		String rt = "\r\n";
		
		// 获取zip打包对象 响应到response输出流中
		ZipOutputStream zipOutputStream = new ZipOutputStream(response.getOutputStream()); 
	
		for (String filename : filenames) {
			str += filename + rt;
			File file = new File(path + filename); // 获得文件
			zipOutputStream.putNextEntry(new ZipEntry(filename)); // 设置要压缩的下一个文件名条目
			
			FileInputStream fis = new FileInputStream(file); // 读取需要下载的文件内容
			
			byte[] b = new byte[1024]; // 循环读取, 每次读取1024个字节
			int n = 0;
			while ((n = fis.read(b)) != -1) {
				zipOutputStream.write(b, 0, n); // 将文件写入zip
			}
			zipOutputStream.flush();
			fis.close();
		}
		zipOutputStream.setComment("download success:" + rt + str);
		zipOutputStream.flush();
		zipOutputStream.close();
	}

}

运行结果:
1.下载
在这里插入图片描述
2.下载成功
在这里插入图片描述

项目目录结构:

在这里插入图片描述

SmartUpload的常用实用方法:

try {
			// 设置不允许上传文件的类型
			sUpload.setDeniedFilesList("jsp,js");
			// 上传文件
			sUpload.upload();
			// 保存文件
			int count = sUpload.save(filePath);
			System.out.println("上传成功" + count + "个文件!");
		} catch (Exception e) {
			// TODO Auto-generated catch block
			result = " 上传失败! ";
			if (e.getMessage().indexOf("1015") != -1) { // 允许上传文件文件类型
				result = "上传失败:上传文件类型不正确! ";
			} else if (e.getMessage().indexOf("1010") != -1) { // 不允许上传文件类型
				result = "上传失败:上传文件类型不正确! ";
			} else if (e.getMessage().indexOf("1105") != -1) { // 上传文件的大小
				result = "上传失败:上传文件大小大于允许上传的最大值! ";
			} else if (e.getMessage().indexOf("1110") != -1) { // 上传文件总大小
				result = "上传失败:上传文件总大小大于允许上传的最大值! ";
			}
			e.printStackTrace();
		}

exception:
1. e.getMessage().indexOf(“1015”)
// 允许上传文件文件
2. e.getMessage().indexOf(“1010”)
// 不允许上传文件类型
3. e.getMessage().indexOf(“1105”)
// 上传文件的大小
4. e.getMessage().indexOf(“1110”)
// 上传文件总大小

获取上传文件信息

for (int i = 0; i < sUpload.getFiles().getCount(); i++) {
			com.jspsmart.upload.File tempFile = sUpload.getFiles().getFile(i);
			System.out.println("---------------------------");
			System.out.println("表单中name的值:" + tempFile.getFieldName());
			System.out.println("上传文件名:" + tempFile.getFileName());
			System.out.println("上传文件的大小:" + tempFile.getSize());
			System.out.println("上传文件的拓展名:" + tempFile.getFileExt());
			System.out.println("上传文件的全名:" + tempFile.getFilePathName());
		}
  1. tempFile.getFieldName(); 表单中name的值
  2. tempFile.getFileName()); 上传文件名
  3. tempFile.getSize()); 上传文件的大小
  4. tempFile.getFileExt()); 上传文件的拓展名
  5. tempFile.getFilePathName()); 上传文件的全名
  • 5
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值