• SpringMvc文件资源防止被外链链接


     1     /**
     2      * 文件下载防止文件被别的网站引用
     3      * 直接访问会访问不了
     4      * @Description:
     5      * @param type
     6      *            文件后缀名
     7      * @param fileName
     8      *            文件名
     9      * @param request
    10      * @param response
    11      * @param referer
    12      *            转发头部里面只有包含您的域名才给资源
    13      * @return
    14      */
    15     // @RequestMapping(value="/downloadBySelf/{fileName}/{type}",method=RequestMethod.GET)
    16     @RequestMapping(value = "/downloadBySelf/{fileName}/{type}", method = RequestMethod.GET)
    17     public String downloadFileByself(@PathVariable("type") String type,
    18             @PathVariable("fileName") String fileName,
    19             HttpServletRequest request, HttpServletResponse response,
    20             @RequestHeader String referer // 这个就是获取头部信息
    21     ) {
    22         log.info(referer);
    23         if (referer != null) {//这里可以设置自己的域名
    24 //        if(null!=referer&&referer.contains("?"))
    25             if (fileName != null) {
    26                 String realPath = request.getServletContext().getRealPath(
    27                         "WEB-INF/File/");
    28                 File file = new File(realPath, fileName + "." + type);
    29                 if (file.exists()) {
    30                     response.setContentType("application/force-download");// 设置强制下载不打开
    31                     response.addHeader("Content-Disposition",
    32                             "attachment;fileName=" + fileName + "." + type);// 设置文件名
    33                     byte[] buffer = new byte[1024];
    34                     FileInputStream fis = null;
    35                     BufferedInputStream bis = null;
    36                     try {
    37                         fis = new FileInputStream(file);
    38                         bis = new BufferedInputStream(fis);
    39                         OutputStream os = response.getOutputStream();
    40                         int i = bis.read(buffer);
    41                         while (i != -1) {
    42                             os.write(buffer, 0, i);
    43                             i = bis.read(buffer);
    44                         }
    45                     } catch (Exception e) {
    46                         // TODO: handle exception
    47                         e.printStackTrace();
    48                     } finally {
    49                         if (bis != null) {
    50                             try {
    51                                 bis.close();
    52                             } catch (IOException e) {
    53                                 // TODO Auto-generated catch block
    54                                 e.printStackTrace();
    55                             }
    56                         }
    57                         if (fis != null) {
    58                             try {
    59                                 fis.close();
    60                             } catch (IOException e) {
    61                                 // TODO Auto-generated catch block
    62                                 e.printStackTrace();
    63                             }
    64                         }
    65                     }
    66                 }
    67             }
    68         }
    69         return null;
    70     }

    @RequestHeader String referer // 这个就是获取头部信息由这个来获取自己的头部信息

    如果这个头部信息含有自己的域名则说明这个资源是自己的网站中的,否则则不让他进行下载

  • 相关阅读:
    Memcached缓存在.Net 中的使用(memcacheddotnet)
    转载 单目摄像机标定说明
    图像的上采样 下采样
    VOC数据集 目标检测
    tensorflow用pretrained-model做retrain
    图像分类基础
    TensorRT学习总结
    Jetson Nano Developer Kit
    pytorch深度学习60分钟闪电战
    系统检测工具ROSWTF
  • 原文地址:https://www.cnblogs.com/lonecloud/p/5990065.html
Copyright © 2020-2023  润新知