文件上传下载
This commit is contained in:
@@ -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){
|
||||||
//输出缓冲区的内容到浏览器,实现文件下载
|
//输出缓冲区的内容到浏览器,实现文件下载
|
||||||
|
@@ -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>
|
||||||
|
Reference in New Issue
Block a user