• 大小: 192KB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2021-06-02
  • 语言: Java
  • 标签: JavaWeb  

资源简介

文件上传下载,可解决多个安全访问问题。 博客: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\.mymetadata
     文件        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.xml
     文件          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\meta-INF\
     文件          36  2018-01-06 10:25  文件上传下载\FileUpDownLoad\WebRoot\meta-INF\MANIFEST.MF
     文件         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个文件信息

评论

共有 条评论