请求nginx的静态文件,都为直接下载而不是打开

前言

在用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>

即可简单实现下载功能,不用再写接口以流等形式。

    原文作者:channlang
    原文地址: https://blog.csdn.net/weixin_42432697/article/details/106085880
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞