web文件下载(附方案及源码配置)

1. 场景描述

因项目需查询数据量比较大(需要查询Hbase等nosql数据库),采用用户点击查询后,后台查询并生成查询文件;然后消息通知用户后,用户点击下载的方式来满足用户需求。

2. 解决方案

Web容器用的Tomcat,拟采用tomcat提供文件下载功能。

2.1 开启虚拟目录与路径映射(不建议)

需修改tomcat下的web.xm和server.xml文件

2.1.1 开启虚拟目录

修改web.xml


            listings
            false

        
-------------------修改为:-----------

            listings
            true

2.1.2 开启路径映射

修改server.xml

     
        
      
     
      ------------新加一个----------------
          
        
        
      

其中:path中的 "/test"为请求访问路径;/home/laowang/test为文件存在服务器的实际路径。

2.1.3 效果

web文件下载(附方案及源码配置)_第1张图片

2.1.4 存在不足

web中listings的 含义是Directory Listing(虚拟目录),默认false其实是处于安全考虑的,修改为true其实是不安全的,不建议的。

2.2 将文件放置到ROOT下(不建议)

2.2.1 说明

直接将文件放置到目录:apache-tomcat-8.0.53/webapps/ROOT,因为tomcat本身提供的就是web服务,可以直接访问,不用修改任何东西。

2.2.2 效果

web文件下载(附方案及源码配置)_第2张图片

2.2.3 存在不足

ROOT目录,重新打包的时候,文件会丢失的,只能用于临时文件还可以,与项目需求不符合。

2.3 只开启路径映射及相关配置(建议)

2.3.1 开启路径映射
 
    
  
 
  ------------新加一个----------------
      
    
    
  
2.3.2 效果

(1)因未开启虚拟路径服务,所以不能访问其他文件。

web文件下载(附方案及源码配置)_第3张图片

(2)只有文件名称完全对的上,才能访问。

web文件下载(附方案及源码配置)_第4张图片

2.3.3 存在问题及解决方案

大家通过截图可能也发现了,文件是直接打开的,而并不是下载到本地,项目需求是要下载到本地打开的。

有两个方式解决

(1)第一个是在打开的文件右键-》另存为就可以下载,但是这样太不不方便。

(2)结合前端html使用a标签,点击后直接下载。(推荐)




    
    Title


download


效果图,点击后就直接下载到默认目录了。

web文件下载(附方案及源码配置)_第5张图片


I’m 「软件老王」,如果觉得还可以的话,关注下呗,后续更新秒知!欢迎讨论区、同名公众号留言交流!

你可能感兴趣的:(开发工具)