文件上传下载

This commit is contained in:
cyk
2023-07-06 19:40:12 +08:00
parent 2d546047c7
commit 77c21dadd6
2 changed files with 12 additions and 21 deletions

View File

@@ -18,27 +18,13 @@ public class DownLoadServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response) public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException { throws ServletException, IOException {
response.setCharacterEncoding("UTF-8"); response.reset();
response.setContentType("text/html; charset=utf-8"); response.setContentType("application/x-msdownload;charset=utf-8");
String curOrigin = request.getHeader("Origin");
response.setHeader("Access-Control-Allow-Origin", curOrigin == null ? "true" : curOrigin);
response.setHeader("Access-Control-Allow-Credentials", "true");
response.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE, HEAD");
response.setHeader("Access-Control-Max-Age", "3600");
response.setHeader("Access-Control-Allow-Headers", "access-control-allow-origin, authority, content-type, version-info, X-Requested-With");
response.setContentType("application/json;charset=UTF-8");
PrintWriter writer = response.getWriter();
//得到要下载的文件名 //得到要下载的文件名
String fileName = request.getParameter("filename"); String fileName = request.getParameter("filename");
System.out.print(fileName); System.out.println(fileName);
//本地需要进行转码linux服务器使用就会出现下载乱码 //本地需要进行转码linux服务器使用就会出现下载乱码
//fileName = new String(fileName.getBytes("iso8859-1"),"UTF-8"); //fileName = new String(fileName.getBytes("iso8859-1"),"UTF-8");
// System.out.print("转码后"+fileName); // System.out.print("转码后"+fileName);
//上传的文件都是保存在/WEB-INF/upload目录下的子目录当中 //上传的文件都是保存在/WEB-INF/upload目录下的子目录当中
String fileSaveRootPath=this.getServletContext().getRealPath(File.separator+"WEB-INF"+File.separator+"upload"); String fileSaveRootPath=this.getServletContext().getRealPath(File.separator+"WEB-INF"+File.separator+"upload");
@@ -48,27 +34,31 @@ public class DownLoadServlet extends HttpServlet {
//得到要下载的文件 //得到要下载的文件
File file = new File(fileSaveRootPath + File.separator + fileName); File file = new File(fileSaveRootPath + File.separator + fileName);
//File file = new File(fileName); //File file = new File(fileName);
System.out.print(file); System.out.println(file);
System.out.print("\n"); System.out.print("\n");
// 浏览器请求响应转码防止乱码 // 浏览器请求响应转码防止乱码
response.setCharacterEncoding("UTF-8"); response.setCharacterEncoding("UTF-8");
request.setCharacterEncoding("UTF-8"); request.setCharacterEncoding("UTF-8");
//如果文件不存在 //如果文件不存在
if(!file.exists()){ if(!file.exists()){
setResultError("文件资源已被删除",writer); request.setAttribute("message","wrong");
request.getRequestDispatcher("/message.jsp").forward(request,response);
return; return;
} }
//处理文件名 //处理文件名
String realname = fileName.substring(fileName.indexOf("_")+1); String realname = fileName.substring(fileName.indexOf("_")+1);
System.out.println(realname);
//设置响应头,控制浏览器下载该文件 //设置响应头,控制浏览器下载该文件
response.setHeader("content-disposition", "attachment;filename=" + URLEncoder.encode(realname, "UTF-8")); response.setHeader("content-disposition", "attachment;filename=" + URLEncoder.encode(fileName, "UTF-8"));
//读取要下载的文件,保存到文件输入流 //读取要下载的文件,保存到文件输入流
FileInputStream in = new FileInputStream(fileSaveRootPath +File.separator+ fileName); FileInputStream in = new FileInputStream(fileSaveRootPath +File.separator+ fileName);
//创建输出流 //创建输出流
OutputStream out = response.getOutputStream(); OutputStream out = response.getOutputStream();
//创建缓冲区 //创建缓冲区
byte buffer[] = new byte[1024]; byte buffer[] = new byte[1024];
int len = 0; int len = 100;
//循环将输入流中的内容读取到缓冲区当中 //循环将输入流中的内容读取到缓冲区当中
while((len=in.read(buffer))>0){ while((len=in.read(buffer))>0){
//输出缓冲区的内容到浏览器,实现文件下载 //输出缓冲区的内容到浏览器,实现文件下载

View File

@@ -6,6 +6,7 @@
To change this template use File | Settings | File Templates. To change this template use File | Settings | File Templates.
--%> --%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %> <%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%--<%@ taglib prefix=" " uri="http://java.sun.com/jsp/jstl/core"%>--%>
<html> <html>
<head> <head>
<title>$Title$</title> <title>$Title$</title>