加入收藏 | 设为首页 | 会员中心 | 我要投稿 安卓应用网 (https://www.0791zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

Java开发之文件下载

发布时间:2020-05-24 16:01:32 所属栏目:Java 来源:互联网
导读:Java开发之文件下载

下面是脚本之家 jb51.cc 通过网络收集整理的代码片段。

脚本之家小编现在分享给大家,也给大家做个参考。

    package com.example.web;  
      
    import java.io.File;  
    import java.io.FileInputStream;  
    import java.io.IOException;  
    import java.io.InputStream;  
    import java.io.OutputStream;  
    import java.net.URLEncoder;  
      
    import javax.servlet.ServletException;  
    import javax.servlet.http.HttpServlet;  
    import javax.servlet.http.HttpServletRequest;  
    import javax.servlet.http.HttpServletResponse;  
      
    import org.apache.commons.io.IOUtils;  
      
    public class Download extends HttpServlet {  
      
        public void doGet(HttpServletRequest request,HttpServletResponse response)  
                throws ServletException,IOException {  
            response.setContentType("text/html;charset=utf-8");  
            OutputStream out=response.getOutputStream();  
            //获取要下载的文件名  
            String fileName=request.getParameter("loadname");  
            fileName=new String(fileName.getBytes("ISO-8859-1"),"UTF-8");  
            //得到下载文件的路径  
            String storPath=getServletContext().getRealPath("WEB-INF/files");  
            //得到源文件名  
            String oldName=fileName.split("_")[1];  
            //进一步根据hashcode来确定子文件夹  
            String childPath=generateDir(storPath,fileName);  
            //判断要下载的文件是否还存在  
            File file=new File(storPath+File.separator+childPath+File.separator+fileName);  
            if(!file.exists()){  
                out.write("你要下载的资源可能不存在".getBytes());  
            }else{  
                //如果存在就进行下载操作  
                InputStream is=new FileInputStream(file);  
                //指明下载的响应头  
                response.setHeader("Content-Disposition","attachment;filename="+URLEncoder.encode(oldName,"UTF-8"));  
                IOUtils.copy(is,out);  
                is.close();  
            }  
        }  
        private String generateDir(String storePath,String fileName) {  
            int hashcode=fileName.hashCode();  
            int dir1=hashcode &  0xf;  
            int dir2=(hashcode & 0xf0)>>4;  
            String childPath=dir1+File.separator+dir2;  
            File file=new File(storePath,childPath);  
            if(!file.exists()){  
                file.mkdirs();  
            }  
            return childPath;  
        }  
        public void doPost(HttpServletRequest request,IOException {  
            this.doGet(request,response);  
      
        }  
      
    }  

以上是脚本之家(jb51.cc)为你收集整理的全部代码内容,希望文章能够帮你解决所遇到的程序开发问题。

如果觉得脚本之家网站内容还不错,欢迎将脚本之家网站推荐给程序员好友。

(编辑:安卓应用网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读