• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

JavaScript判断文件是否存在的实例代码

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

一、业务场景

最近一直在做和文件上传和下载相关的开发,在涉及到下载的时候,我使用如下的方法进行下载

   //获取或者赋值一个下载路径
   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判断文件存在内容请搜索极客世界以前的文章或继续浏览下面的相关文章希望大家以后多多支持极客世界!


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
如何用nodejs给C#写一个数据表的实体类生成工具发布时间:2022-02-05
下一篇:
vue+element开发一个谷歌插件的全过程发布时间:2022-02-05
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap