JavaScript判斷文件是否存在的實(shí)例代碼
一、業(yè)務(wù)場(chǎng)景
最近一直在做和文件上傳和下載相關(guān)的開(kāi)發(fā),在涉及到下載的時(shí)候,我使用如下的方法進(jìn)行下載
//獲取或者賦值一個(gè)下載路徑 let downUrl; //采用如下的方式可以直接下載文件 window.location.href = downUrl;
業(yè)務(wù)問(wèn)題:如果這個(gè)文件不存在,會(huì)出現(xiàn)頁(yè)面跳轉(zhuǎn)的情況;
比如:1、剛好文件存儲(chǔ)服務(wù)器掛機(jī)了 2、或者剛好文件存儲(chǔ)服務(wù)器上的文件被人刪除了
如上的不正常訪問(wèn)都會(huì)導(dǎo)致下載功能出現(xiàn)問(wèn)題,對(duì)用戶來(lái)說(shuō)不友好的是出現(xiàn)頁(yè)面跳轉(zhuǎn)的情況
這里如果我們?cè)谙螺d的時(shí)候知道文件是否存在就可以很好的解決這個(gè)問(wèn)題了
二、解決方案
提供兩種解決思路
1.后端解決:一般文件存儲(chǔ)在文件存儲(chǔ)服務(wù)器是有一個(gè)專(zhuān)門(mén)的key,看看能否單獨(dú)有一個(gè)查詢文件是否存在的接口,即下載前根據(jù)文件的唯一key查詢一下文件是否存在,如果存在則執(zhí)行下載的語(yǔ)句,如果不存在,給出用戶對(duì)應(yīng)的提示
if(){
//如果文件存在下載
}else{
//否則給出對(duì)應(yīng)的提示
}
2.前端解決:前端方法判斷文件流是否存在
我給出的是vue里面方法的寫(xiě)法,供實(shí)踐參考
/**
* 判斷服務(wù)的文件是否存在
* @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;//其他狀態(tài)
}
}
后續(xù)邏輯可以自行補(bǔ)充,如上可以測(cè)試出文件流是否存在,如果存在我們進(jìn)行下載,如果不存在那么給出對(duì)應(yīng)的提示,這樣就解決了文件路徑不存在跳轉(zhuǎn)到空白頁(yè)面的情況
補(bǔ)充:“流”是一個(gè)抽象的概念,它是對(duì)輸入輸出設(shè)備的一種抽象理解,在java中,對(duì)數(shù)據(jù)的輸入輸出操作都是以“流”的方式進(jìn)行的。
總結(jié):
我們遇到業(yè)務(wù)問(wèn)題可以從前后端兩個(gè)角度思考,學(xué)習(xí)分享獲取新知,希望有更多的進(jìn)步 ……
到此這篇關(guān)于JavaScript判斷文件是否存在的文章就介紹到這了,更多相關(guān)JavaScript判斷文件存在內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
微信小程序?qū)崿F(xiàn)實(shí)時(shí)圓形進(jìn)度條的方法示例
這篇文章主要給大家介紹了利用微信小程序?qū)崿F(xiàn)實(shí)時(shí)圓形進(jìn)度條的方法,文中給出了詳細(xì)的示例代碼,相信對(duì)大家具有一定的參考價(jià)值,需要的朋友們下面來(lái)一起看看吧。2017-02-02
原生JavaScript實(shí)現(xiàn)滾動(dòng)條效果
這篇文章主要介紹了原生JavaScript實(shí)現(xiàn)滾動(dòng)條效果的相關(guān)資料,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-01-01
js實(shí)現(xiàn)拖拽 閉包函數(shù)詳細(xì)介紹
在開(kāi)發(fā)過(guò)程中可能會(huì)使用js實(shí)現(xiàn)拖拽等相關(guān)功能,本文將以此問(wèn)題進(jìn)行深入介紹,需要了解的朋友可以參考下2012-11-11
詳解用js代碼觸發(fā)dom事件的實(shí)現(xiàn)方案
這篇文章主要介紹了詳解用js代碼觸發(fā)dom事件的實(shí)現(xiàn)方案,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-06-06
微信小程序授權(quán)獲取用戶詳細(xì)信息openid的實(shí)例詳解
這篇文章主要介紹了微信小程序授權(quán)獲取用戶詳細(xì)信息openid的實(shí)例詳解的相關(guān)資料,希望通過(guò)本文能幫助到大家,需要的朋友可以參考下2017-09-09
原生javascript單例模式的應(yīng)用實(shí)例分析
這篇文章主要介紹了原生javascript單例模式的應(yīng)用,結(jié)合實(shí)例形式分析了JavaScript單例模式的基本功能、原理、應(yīng)用及操作注意事項(xiàng),需要的朋友可以參考下2020-02-02

