前言
在用nginx做文件服务器时,前端要做一个下载功能,文件的访问为nginx做代理指向静态文件,这时部分类型的文件——例如:img、txt等浏览器能直接打开的文件会直接打开文件而不是下载文件。这里使用第三方js,提供解决办法。
下载download.js(官网)
使用方法
页面中引入此js文件。
使用js发送请求,请求地址为访问文件的地址
var ajax = new XMLHttpRequest();
//path为静态资源访问路径
ajax.open("GET", path, true);
ajax.responseType = 'blob';
ajax.onload = function(e){
download(e.target.response, 自定义文件名(带后缀), "application/octet-stream");
};
ajax.send();
这样就实现了请求nginx的静态资源都为下载。
注意
上述需要配置nginx的跨域。在location中
add_header 'Access-Control-Allow-Origin' '*';
add_header 'Access-Control-Allow-Credentials' 'true';
番外
如果不是访问请求地址,而是相对路径下的文件,例如系统运行的服务器下,可以使用html5的<a>标签其中的download属性。
例:<a href=”相对路径” download>下载</a>
即可简单实现下载功能,不用再写接口以流等形式。