Layui-文件下载
-
我遇到的一个严重的问题:访问不到
已知本地读取文件的确是这种格式,但是Spring Security太严格了,不让我访问
file:///D:/Homework/毕业设计/参考文献大合集/参考论文/淘宝店铺CRM战略及具体实施.pdf
参考了一下如下文章:
Not allowed to load local resource: 报错解决方法
关于Not allowed to load local resource问题解决方案
所以需要在WebMvcConfigurationSupport的继承类里设置一下可以访问……
但是问题又来了,这个前面好像一定得.addResourceHandler("/upload/**")才能.addResourceLocations("file:D:/upload/");,这就很烦了,我并不想重新设置访问路径,因为我数据库里存的文件、图片位置是本地路径,这样我每次读都要重新拼字符串了,好烦。
@Configuration
public class WebMvcConfig extends WebMvcConfigurationSupport {
@Override
public void addViewControllers(ViewControllerRegistry registry) {
registry.addViewController("/login").setViewName("login");
registry.addViewController("/").setViewName("index");
}
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/static/**").addResourceLocations("classpath:/static/");
registry.addResourceHandler("/upload/**").addResourceLocations("file:D:/upload/");
// registry.addResourceHandler("/static/treetable-lay/treetable.js").addResourceLocations("classpath:/static/treetable-lay/treetable.js");
}
}
layui相关的文件下载有点少,我甚至去找原生js中怎么实现的。
Layui文件下载
layui文件上传到下载
js实现点击下载文件
1、使用<a>标签
<a href="../../static/xxx.xlsx" download="xxx.xlsx">下载</a>
直接点击可以下载,需要注意的是download属性,当不加download属性时,如果文件格式为txt、pdf、jpg等浏览器支持直接打开的文件格式,那么不会下载,而是浏览器直接打开;添加download属性之后,就会下载,并且下载文件默认命名为你download属性的值。(参考: https://blog.csdn.net/jsnancy/article/details/80824801)
2、使用window.open()
window.open("../../static/xxx.xlsx")
window.open("https://mp.csdn.net/postedit/static/xxx.xlsx")
当然,下载的资源可以是本地的,也可以是网上的。
————————————————
版权声明:本文为CSDN博主「走_开」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/believet93/article/details/99821853
最后用的方法是直接window.open();,然后去掉D:两个字符……鬼知道这有多危险,前端做这操作还好,后端如果读到文件路径为空的话,就会空指针异常了。
//查看签订文件
$('#downSignFile').on('click',function(data) {
var signFile = $("#signFile").val().substring(2);
window.open(signFile);
});
//查看条款文件
$('#downClauseFile').on('click',function(data) {
var clauseFile = $("#clauseFile").val().substring(2);
window.open(clauseFile);
});
//查看签名文件
$('#downSignature').on('click',function(data) {
var signature = $("#signature").val().substring(2);
window.open(signature);
});
建议我自己再检查一下这些个傻瓜式解法,或当初添加信息时强制要求上传文件或图片,确保有路径被存储了。
这个以后需要改进,因为如果没有文件的话,subString方法会返回空指针异常。
后台用下面这种方法解决了,唉。
// D:/upload/ProgressCert_MT20200503173207.jpg
if(maintain.getChargeCertFile()==null || maintain.getChargeCertFile().length()<=3){
showCert2 = "xxx";
}else{
showCert2 = maintain.getChargeCertFile().substring(2);
}
model.addAttribute("showCert2",showCert2);