JSP+Servlet中使用cos.jar实现文件上传下载

第一、前言
本文通过JSP+Servlet的架构,用cos.jar实现文件的上传与下载。不涉及数据库交互。
第二、引入相关jar包
下载地址:JSP+Servlet+cos文件上传下载Jar包.rar
第三、代码示例
1、新建com.servlet.UploadServlet.java

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.UUID;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.oreilly.servlet.MultipartRequest;
/**
 * 文件上传
 * @author shixiangcheng
 * 2020-08-09
 */
public class UploadServlet extends HttpServlet{
	private static final long serialVersionUID = 1L;
	public UploadServlet() {
		super();
	}
	protected void doGet(HttpServletRequest request,HttpServletResponse response)throws ServletException, IOException{
		doPost(request, response);
	}
	protected void doPost(HttpServletRequest request,HttpServletResponse response)throws ServletException, IOException{
		request.setCharacterEncoding("UTF-8");
		String batchNo=UUID.randomUUID().toString().trim();		
		String root=getServletContext().getRealPath("/");
		MultipartRequest mr=new MultipartRequest(request, root,"UTF-8");
		//可通过下面方式获取页面提交的其它字段值
		//String studentNo=mr.getParameter("studentNo");
		File file=mr.getFile("file");
		String realFileName=file.getName();
        File fileMkdir=new File("E:\\文件");
        //定义输出流,将文件保存在E盘   file.getOriginalFilename()为获得文件的名字 
        FileOutputStream os=new FileOutputStream(fileMkdir.getPath()+"\\"+batchNo+realFileName.substring(realFileName.indexOf(".")));
        InputStream in=new FileInputStream(file);
		byte buffer[]=new byte[1024];
		//判断输入流中的数据是否已经读完的标识
		int len=0;
		//循环将输入流读入到缓冲区当中,(len=in.read(buffer))>0就表示in里面还有数据
		while((len=in.read(buffer))>0){//使用FileOutputStream输出流将缓冲区的数据写入到指定的目录
			os.write(buffer, 0, len);
		}
        os.flush(); //关闭流 
        in.close();
        os.close();
		request.getRequestDispatcher("/success.jsp?realFileName="+realFileName+"&fileName="+batchNo+realFileName.substring(realFileName.indexOf("."))).forward(request, response);
	}
}

2、新建com.servlet.DownLoadServlet.java

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.URLEncoder;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
 * 文件下载
 * @author shixiangcheng
 * 2020-08-09
 */
public class DownLoadServlet extends HttpServlet{
	private static final long serialVersionUID = -4703546973088226197L;
	public DownLoadServlet() {
		super();
	}
	protected void doGet(HttpServletRequest request,HttpServletResponse response)throws ServletException, IOException{
		doPost(request, response);
	}
	protected void doPost(HttpServletRequest request,HttpServletResponse response)throws ServletException, IOException{
		request.setCharacterEncoding("UTF-8");
		String fileName=request.getParameter("fileName");
		String realFileName=request.getParameter("realFileName");
    	String path = "E:/文件/"+ fileName;
		BufferedInputStream bis = null;
		BufferedOutputStream bos = null;
		OutputStream fos = null;
		InputStream fis = null;
		File uploadFile = new File(path);
		try {
			fis = new FileInputStream(uploadFile);
			bis = new BufferedInputStream(fis);
			fos =response.getOutputStream();
			bos = new BufferedOutputStream(fos);
			//这个就就是弹出下载对话框的关键代码
			response.setHeader("Content-disposition","attachment;filename="+URLEncoder.encode(realFileName,"UTF-8"));
			byte[] buffer = new byte[1024];
			//判断输入流中的数据是否已经读完的标识
			int len = 0;
			//循环将输入流读入到缓冲区当中,(len=in.read(buffer))>0就表示in里面还有数据
			while((len=bis.read(buffer))>0){
				bos.write(buffer, 0, len);
			}
			bos.flush();
		} catch (Exception e) {
			e.printStackTrace();
		}finally {
			if(fis!=null) fis.close();
			if(bis!=null) bis.close();
			if(fos!=null) fos.close();
			if(bos!=null) bos.close();
		}
	}
}

3、修改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" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
   <servlet>
    <description></description>
    <display-name>UploadServlet</display-name>
    <servlet-name>UploadServlet</servlet-name>
    <servlet-class>com.servlet.UploadServlet</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>UploadServlet</servlet-name>
    <url-pattern>/UploadServlet</url-pattern>
  </servlet-mapping>
   <servlet>
    <description></description>
    <display-name>DownLoadServlet</display-name>
    <servlet-name>DownLoadServlet</servlet-name>
    <servlet-class>com.servlet.DownLoadServlet</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>DownLoadServlet</servlet-name>
    <url-pattern>/DownLoadServlet</url-pattern>
  </servlet-mapping>
</web-app>

4、新建index.jsp

<%@page contentType="text/html;charset=utf-8" %>
<html>
<head>
<title>上传</title>
<style type="text/css">
table {font-size:18px;}
table caption {font-size:30px;}
</style>
<script type="text/javascript">
function checkForm(myForm) {			
	if(myForm.file.value == "") {
		alert("附件不能为空!");
		myForm.file.focus();
		return false;
	}
	return true;
}
</script>
</head>
<body>
<form action="<%=request.getContextPath()%>/UploadServlet" name="form1" method="post" onsubmit="return checkForm(this);" enctype="multipart/form-data">
<table border="1" align="center">
<caption>文件上传</caption>	
<tr>
	<td>文件<font color="red">*</font></td>
	<td><input type="file" name="file" id="file" style="width:400px;"/></td>
</tr>
 <tr>
	<td colspan="2" align="center">&nbsp;</td>
</tr>
<tr>
	<td colspan="2" align="center">
		<input type="submit" value="提交" style="width:100px;">
	</td>
</tr>
</table>
</form>
</body>
</html>

5、新建success.jsp

<%@page contentType="text/html;charset=utf-8" %>
<%
	String realFileName=request.getParameter("realFileName");
	String fileName=request.getParameter("fileName");
%>
<html>
<head>
	<title>下载</title>
</head>
<body>
<span>上传成功!</span>
<a href="<%=request.getContextPath() %>/DownLoadServlet?realFileName=<%=realFileName%>&fileName=<%=fileName%>">下载</a>
<a href="javascript:history.go(-1);">返回</a>
</body>
</html>

6、运行
第一、选择文件,然后点击提交
在这里插入图片描述
第二、提交成功后,到下面页面,点击下载,可下载上传的文件。
在这里插入图片描述
第三、文件上传后存在硬盘上。
在这里插入图片描述
欢迎大家积极留言交流学习心得,点赞的人最美丽,谢谢!

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值