zoukankan      html  css  js  c++  java
  • 07springmvc文件下载

    文件下载
    ---------------------------------------------------
    1)、普通下载
    不安全,
    下载人员可以直接看到下载地址,可以盗链接
    随时可以下载

    <a href="soft/a.rar">软件下载</a>

    html5 新属性
    <a href="soft/a.rar" download>软件下载</a>
    <a href="imgs/girl.jpg" download>美女图片下载</a>
    <a href="/user.jsp" download>jsp程序下载</a>

    2)、安全下载
    必须登录才可以下载
    下载人,从来不知道文件在服务器那个地方

    springmvc 框架内置文件安全下载
    @RequestMapping("/down")
    public ResponseEntity<byte[]> down(HttpServletRequest req) throws IOException {
    String f = req.getServletContext().getRealPath("/imgs/") + "girl.jpg";
    File file = new File(f);
    byte[] body = null;
    InputStream is = new FileInputStream(file);
    body = new byte[is.available()];
    is.read(body);
    HttpHeaders headers = new HttpHeaders();
    headers.add("Content-Disposition", "attchement;filename=" + file.getName());
    HttpStatus statusCode = HttpStatus.OK;
    ResponseEntity<byte[]> entity = new ResponseEntity<byte[]>(body, headers, statusCode);
    return entity;
    }

    @RequestMapping("/download")
    public ResponseEntity<byte[]> download(HttpServletRequest req, HttpServletResponse res) throws IOException {
    ResponseEntity<byte[]> entity = null;
    HttpSession session = req.getSession();
    if(session.getAttribute("member")==null){
    res.setCharacterEncoding("utf-8");
    PrintWriter out = res.getWriter();
    out.print("请登录,登录后才可以下载...");
    out.flush();
    out.close();
    }else {
    String name = req.getParameter("name");
    byte[] body = null;
    String f = req.getServletContext().getRealPath("/download/") + name;
    File file = new File(f);
    InputStream is = new FileInputStream(file);
    body = new byte[is.available()];
    is.read(body);
    HttpHeaders headers = new HttpHeaders();
    headers.add("Content-Disposition", "attchement;filename=" + file.getName());
    HttpStatus statusCode = HttpStatus.OK;
    entity = new ResponseEntity<byte[]>(body, headers, statusCode);
    }
    return entity;
    }

    3)、java web通用的下载实现
    @RequestMapping("/mydown") @ResponseBody
    public void mydown(HttpServletRequest req, HttpServletResponse resp) throws IOException {
    String fileName = req.getParameter("name");
    if (fileName == null) {
    resp.setCharacterEncoding("utf-8");
    PrintWriter out = resp.getWriter();
    out.print("没有下载的文件...");
    out.flush();
    out.close();
    } else {
    resp.setContentType("application/force-download");// 设置强制下载不打开

    String fn = new SimpleDateFormat("yyyyMMddhhmmssS").format(new Date())+fileName.substring(fileName.lastIndexOf("."));
    resp.addHeader("Content-Disposition", "attachment;fileName=" + fn);// 设置文件名

    String path = req.getServletContext().getRealPath("/download/"); //文件下载源路径

    File file = new File(path, fileName);
    byte[] buf = new byte[10240];
    FileInputStream fis = null;
    BufferedInputStream bis = null;
    try {
    fis = new FileInputStream(file);
    bis = new BufferedInputStream(fis);
    OutputStream os = resp.getOutputStream();
    int i = bis.read(buf);
    while (i != -1) {
    os.write(buf, 0, i);
    i = bis.read(buf);
    }
    } catch (Exception e) {
    e.printStackTrace();
    } finally {
    if (bis != null) {
    try {
    bis.close();
    } catch (IOException e) {
    e.printStackTrace();
    }
    }
    if (fis != null) {
    try {
    fis.close();
    } catch (IOException e) {
    e.printStackTrace();
    }
    }
    }
    }
    }

    使用方法
    <h3>jsp自己实现下载</h3>
    <a href="mydown?name=girl.jpg" download>girl-mydown</a>&nbsp;&nbsp;
    <a href="mydown?name=m.jsp" download>jsp</a>
    <a href="mydown?id=60">文档下载</a>

    怕什么真理无穷,进一步有一步的欢喜
  • 相关阅读:
    10 个深恶痛绝的 Java 异常。。
    为什么公司宁愿 25K 重新招人,也不给你加到 20K?原因太现实……
    推荐一款代码神器,代码量至少省一半!
    Spring Cloud Greenwich 正式发布,Hystrix 即将寿终正寝。。
    hdu 3853 LOOPS(概率 dp 期望)
    hdu 5245 Joyful(期望的计算,好题)
    hdu 4336 Card Collector(期望 dp 状态压缩)
    hdu 4405 Aeroplane chess(概率+dp)
    hdu 5036 Explosion(概率期望+bitset)
    hdu 5033 Building (单调栈 或 暴力枚举 )
  • 原文地址:https://www.cnblogs.com/Mkady/p/7200845.html
Copyright © 2011-2022 走看看