平常会有产品提需求,需要将页面的数据下载下来。一般有下面这些方案
上传到云空间
后台生成数据后调用云空间的 API 上传,将返回的 url 地址写到 DB 中对应的字段。这种方案具有一个明显的特点,麻烦。如果仅仅是内部使用,也没有必要。
使用 Nginx 静态文件下载功能
可以直接将下载请求发到 Nginx 机器上,Nginx 将配置的静态文件目录中对应的文件返回给浏览器。
如 http://10.157.1.1/download/offline_export/brand-20171127_1511772246.csv
Nginx 配置如下:
server {
listen 80;
server_name 10.157.1.1;
#ssl on;
ssl_certificate /home/qspace/etc/ssl/a.crt;
ssl_certificate_key /home/qspace/etc/ssl/b.key;
ssl_session_timeout 5m;
ssl_session_cache shared:SSL:100m;
ssl_protocols SSLv2 SSLv3 TLSv1;
ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;
ssl_prefer_server_ciphers on;
location /dowload/ {
root /data/qspace/mmsearch/htdocs;
add_header Content-Disposition 'attachment;filename="*.csv"';
rewrite ^/$ /cgi-bin/readmgr/index.html;
}
}
点击 URL 直接跳转到文件下载设置
在服务器的响应数据里加上
response.addHeader("Content-Disposition","attachment")
这样点击 URL 就会直接下载文件
参考
Download-a-file-without-server-request