资源简介
文件上传下载,可解决多个安全访问问题。
博客: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 实现简单爬虫,爬取图片
相关资源
- 在腾讯云服务器基于sqlserver2012搭建基
- javaweb调用摄像头demo
- javawebDAO模式登录验证
- java加入购物车源码附数据库文件
- JAVAWeb外文文献翻译
- java web开发简单留言板
- 学生管理系统Javaweb mysql
- 供新手学习javaweb servlet mysql .rar
- javaweb一键部署批处理文件
- JavaWeb增删改查
- JavaWeb项目实战
- javaweb课程教学网站基本的增删改查功
- Javaweb 图书管理系统教程
- javaweb学生选课系统课程设计
- javaweb有关外文文献
- jsp个人信息管理系统
- 基于JavaWeb的博客网站的设计与实现毕
- JAVAWEB_项目开发_网上订餐系统-CSDN
- 基于区块链的茶叶溯源平台源代码.
- javaweb使用mvc框架实现注册登录
- pagehelper-3.4.2-fixjar包完整版
- javaweb在线聊天网站
- 基于JSP+Servlet+JavaBean+Dao开发模式——
- javaweb学生信息管理系统112595
- javaWEB面试题大全机会只有一次,千万
- 基于JavaWeb的服装销售管理系统的设计
- 一个纯jsp+Javabean+mysql的学生信息管理
- 基于javaweb 的bootstrap table 案例源码
- Java新闻发布系统源代码
- javaweb电商项目视频
评论
共有 条评论