资源简介
文件上传下载,可解决多个安全访问问题。
博客:http://blog.csdn.net/qq_37902949/article/details/78986446 。
这个是源码demo,上一个不小心上传了tomcat执行文件。

代码片段和文件信息
package com.gx.servlet;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.OutputStream;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.sun.org.apache.xml.internal.security.utils.base64;
public class DownloadServlet extends HttpServlet {
public void doGet(HttpServletRequest request HttpServletResponse response)
throws ServletException IOException {
response.setCharacterEncoding(“UTF-8“);
//获得要下载的文件名
String fileName = request.getParameter(“fileName“);
//fileName = new String(fileName.getBytes(“iso8859-1“)“UTF-8“); //如果jsp页面编码是iso8859-1,需要使用这个转换乱码
//上传的文件都是保存在/upload目录下的子目录当中
String fileSaveRootPath=this.getServletContext().getRealPath(“/upload“);
//通过文件名找出文件的所在目录
String path = findFileSavePathByFileName(fileNamefileSaveRootPath);
//得到要下载的文件
File file = new File(pathfileName);
System.out.println(“文件保存路径:“+path+“\\“+fileName);
//如果文件不存在
if(!file.exists()){
request.setAttribute(“message“ “您要下载的资源已被删除!!“);
request.getRequestDispatcher(“/message.jsp“).forward(request response);
return;
}
//处理文件名
String realName = fileName.substring(fileName.indexOf(“_“)+1);
//设置响应头,控制浏览器下载该文件
response.setHeader(“Content-Disposition“ String.format(“attachment;filename*=utf-8’zh_cn%s“java.net.URLEncoder.encode(realName“UTF-8“)));
//读取要下载的文件,保存到文件输入流
FileInputStream in = new FileInputStream(file);
//创建输出流
OutputStream out = response.getOutputStream();
//创建缓冲区
byte buffer[] = new byte[1024];
int len = 0;
//循环将输入流中的内容读取到缓冲区当中
while((len=in.read(buffer))>0){
//输出缓冲区的内容到浏览器,实现文件下载
out.write(buffer 0 len);
}
//关闭文件输入流
in.close();
//关闭输出流
out.close();
}
public void doPost(HttpServletRequest request HttpServletResponse response)
throws ServletException IOException {
doGet(request response);
}
/**
* @Method: findFileSavePathByFileName
* @Description: 通过文件名和存储上传文件根目录找出要下载的文件的所在路径
* @param filename 要下载的文件名
* @param saveRootPath 上传文件保存的根目录,也就是/upload目录
* @return 要下载的文件的存储目录
*/
public String findFileSavePathByFileName(String filenameString saveRootPath){
int hashcode = filename.hashCode();
int dir1 = hashcode&0xf; //0--15
int dir2 = (hashcode&0xf0)>>4; //0-15
String dir = saveRootPath + “\\“ + dir1 + “\\“ + dir
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2018-01-06 11:24 文件上传下载\
目录 0 2018-01-06 11:24 文件上传下载\FileUpDownLoad\
文件 529 2018-01-06 10:25 文件上传下载\FileUpDownLoad\.classpath
目录 0 2018-01-06 10:25 文件上传下载\FileUpDownLoad\.myeclipse\
文件 315 2018-01-06 10:25 文件上传下载\FileUpDownLoad\.myme
文件 1757 2018-01-06 10:29 文件上传下载\FileUpDownLoad\.project
目录 0 2018-01-06 11:24 文件上传下载\FileUpDownLoad\.settings\
文件 500 2018-01-06 10:25 文件上传下载\FileUpDownLoad\.settings\.jsdtscope
文件 364 2018-01-06 10:25 文件上传下载\FileUpDownLoad\.settings\org.eclipse.jdt.core.prefs
文件 480 2018-01-06 10:25 文件上传下载\FileUpDownLoad\.settings\org.eclipse.wst.common.component
文件 252 2018-01-06 10:25 文件上传下载\FileUpDownLoad\.settings\org.eclipse.wst.common.project.facet.core.xm
文件 49 2018-01-06 10:25 文件上传下载\FileUpDownLoad\.settings\org.eclipse.wst.jsdt.ui.superType.container
文件 6 2018-01-06 10:25 文件上传下载\FileUpDownLoad\.settings\org.eclipse.wst.jsdt.ui.superType.name
目录 0 2018-01-06 10:27 文件上传下载\FileUpDownLoad\src\
目录 0 2018-01-06 10:27 文件上传下载\FileUpDownLoad\src\com\
目录 0 2018-01-06 10:27 文件上传下载\FileUpDownLoad\src\com\gx\
目录 0 2018-01-06 11:24 文件上传下载\FileUpDownLoad\src\com\gx\servlet\
文件 3743 2018-01-06 10:48 文件上传下载\FileUpDownLoad\src\com\gx\servlet\DownloadServlet.java
文件 7312 2018-01-06 10:40 文件上传下载\FileUpDownLoad\src\com\gx\servlet\UploadServlet.java
目录 0 2018-01-06 11:24 文件上传下载\FileUpDownLoad\WebRoot\
文件 551 2018-01-06 10:43 文件上传下载\FileUpDownLoad\WebRoot\download.jsp
文件 359 2018-01-06 10:41 文件上传下载\FileUpDownLoad\WebRoot\message.jsp
目录 0 2018-01-06 10:25 文件上传下载\FileUpDownLoad\WebRoot\me
文件 36 2018-01-06 10:25 文件上传下载\FileUpDownLoad\WebRoot\me
文件 946 2018-01-06 10:42 文件上传下载\FileUpDownLoad\WebRoot\upload.jsp
目录 0 2018-01-06 11:24 文件上传下载\FileUpDownLoad\WebRoot\WEB-INF\
目录 0 2018-01-06 10:27 文件上传下载\FileUpDownLoad\WebRoot\WEB-INF\classes\
目录 0 2018-01-06 10:27 文件上传下载\FileUpDownLoad\WebRoot\WEB-INF\classes\com\
目录 0 2018-01-06 10:27 文件上传下载\FileUpDownLoad\WebRoot\WEB-INF\classes\com\gx\
目录 0 2018-01-06 11:24 文件上传下载\FileUpDownLoad\WebRoot\WEB-INF\classes\com\gx\servlet\
文件 3724 2018-01-06 10:48 文件上传下载\FileUpDownLoad\WebRoot\WEB-INF\classes\com\gx\servlet\DownloadServlet.class
............此处省略6个文件信息
- 上一篇:北邮大三java选修课oj课后作业1
- 下一篇:java 实现简单爬虫,爬取图片
相关资源
- JavaWeb停车场管理系统(源代码,数据
- 基于JAVAweb的教务排课系统
- 锐聘学院QST青软JavaWeb十二个打包
- javaweb网上购物系统源码(附数据库脚
- javaweb校园宿舍系统(附数据库脚本)
- JavaWeb书城项目(附数据库脚本)
- 基于SSH框架的JavaWeb项目—人员信息管
- javaweb实现的邮件收发系统(附数据库
- java web知识点总结思维导图
- java web项目案例——知识管理软
- 博客系统笔记以及源码
- 李兴华JavaWeb培训经典笔记
- javaweb程序源码
- 基于JavaWeb的美食图片分享网站.zip
- JavaWeb-学生在线选课系统
- JavaWeb经典项目-图书管理系统
- 二手房屋交易系统
- 网络购物商城项目-12个项目
- 毕设:基于javaweb的宿舍管理系统
- javaweb政府oa代码
- 基于SSM框架的网上书店商城项目系统
- 旅游平台JAVA WEB
- JavaWeb网上图书商城完整项目资料
- JavaWeb开发的BBS系统
- SSM+Mysql实现防慕课网项目.zip
- Java Web开发实战经典
- 深入分析JavaWeb技术内幕修订版_13596
- JavaWEB商城项目(包括数据库)
- 基于JavaWeb的网上书店的设计与实现毕
- 基于JavaWeb学生管理系统
评论
共有 条评论