【辰兮要努力】:hello你好我是辰兮,很高兴你能来阅读,昵称是希望自己能不断精进,向着优秀程序员前行!
博客来源于项目以及编程中遇到的问题总结,偶尔会有读书分享,我会陆续更新Java前端、后台、数据库、项目案例等相关知识点总结,感谢你的阅读和关注,希望我的博客能帮助到更多的人,分享获取新知,大家一起进步!
吾等采石之人,应怀大教堂之心,愿你们奔赴在自己的热爱里…
一、业务场景
最近一直在做和文件上传和下载相关的开发,在涉及到下载的时候,我使用如下的方法进行下载
//获取或者赋值一个下载路径
let downUrl;
//采用如下的方式可以直接下载文件
window.location.href = downUrl;
业务问题:如果这个文件不存在,会出现页面跳转的情况;
比如:1、刚好文件存储服务器挂机了 2、或者刚好文件存储服务器上的文件被人删除了
如上的不正常访问都会导致下载功能出现问题,对用户来说不友好的是出现页面跳转的情况
这里如果我们在下载的时候知道文件是否存在就可以很好的解决这个问题了
二、解决方案
提供两种解决思路
1.后端解决:一般文件存储在文件存储服务器是有一个专门的key,看看能否单独有一个查询文件是否存在的接口,即下载前根据文件的唯一key查询一下文件是否存在,如果存在则执行下载的语句,如果不存在,给出用户对应的提示
if(){
//如果文件存在下载
}else{
//否则给出对应的提示
}
2.前端解决:前端方法判断文件流是否存在
我给出的是vue里面方法的写法,供实践参考
/**
* 判断服务的文件是否存在
* @param filepath 文件地址
* @param filename
* @returns {Boolean}
*/
isExistFile(filepath, filename){
if(filepath == null || filename == null || filepath === "" || filename ===""){
return false
}
var xmlhttp;
if (window.XMLHttpRequest){
xmlhttp=new XMLHttpRequest();
}else{
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.open("GET",filepath,false);
xmlhttp.send();
if(xmlhttp.readyState === 4){
if(xmlhttp.status === 200) return true; //url存在
else if(xmlhttp.status === 404) return false; //url不存在
else return false;//其他状态
}
}
后续逻辑可以自行补充,如上可以测试出文件流是否存在,如果存在我们进行下载,如果不存在那么给出对应的提示,这样就解决了文件路径不存在跳转到空白页面的情况
补充:“流”是一个抽象的概念,它是对输入输出设备的一种抽象理解,在java中,对数据的输入输出操作都是以“流”的方式进行的。
总结:我们遇到业务问题可以从前后端两个角度思考,学习分享获取新知,希望有更多的进步 ……
更多JavaScript前端学习参考:JavaScript学习案例小结
非常感谢你阅读到这里,如果这篇文章对你有帮助,希望能留下你的点赞👍 关注❤️ 分享👥 留言💬thanks!!!
2021年5月8日21:45:11 愿你们奔赴在自己的热爱里!