JavaScript判斷文件是否存在的實例代碼
一、業(yè)務(wù)場景
最近一直在做和文件上傳和下載相關(guān)的開發(fā),在涉及到下載的時候,我使用如下的方法進行下載
//獲取或者賦值一個下載路徑 let downUrl; //采用如下的方式可以直接下載文件 window.location.href = downUrl;
業(yè)務(wù)問題:如果這個文件不存在,會出現(xiàn)頁面跳轉(zhuǎn)的情況;
比如:1、剛好文件存儲服務(wù)器掛機了 2、或者剛好文件存儲服務(wù)器上的文件被人刪除了
如上的不正常訪問都會導(dǎo)致下載功能出現(xiàn)問題,對用戶來說不友好的是出現(xiàn)頁面跳轉(zhuǎn)的情況
這里如果我們在下載的時候知道文件是否存在就可以很好的解決這個問題了
二、解決方案
提供兩種解決思路
1.后端解決:一般文件存儲在文件存儲服務(wù)器是有一個專門的key,看看能否單獨有一個查詢文件是否存在的接口,即下載前根據(jù)文件的唯一key查詢一下文件是否存在,如果存在則執(zhí)行下載的語句,如果不存在,給出用戶對應(yīng)的提示
if(){ //如果文件存在下載 }else{ //否則給出對應(yīng)的提示 }
2.前端解決:前端方法判斷文件流是否存在
我給出的是vue里面方法的寫法,供實踐參考
/** * 判斷服務(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ù)邏輯可以自行補充,如上可以測試出文件流是否存在,如果存在我們進行下載,如果不存在那么給出對應(yīng)的提示,這樣就解決了文件路徑不存在跳轉(zhuǎn)到空白頁面的情況
補充:“流”是一個抽象的概念,它是對輸入輸出設(shè)備的一種抽象理解,在java中,對數(shù)據(jù)的輸入輸出操作都是以“流”的方式進行的。
總結(jié):
我們遇到業(yè)務(wù)問題可以從前后端兩個角度思考,學(xué)習(xí)分享獲取新知,希望有更多的進步 ……
到此這篇關(guān)于JavaScript判斷文件是否存在的文章就介紹到這了,更多相關(guān)JavaScript判斷文件存在內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
JS通過ajax動態(tài)讀取xml文件內(nèi)容的方法
這篇文章主要介紹了JS通過ajax動態(tài)讀取xml文件內(nèi)容的方法,實例分析了Ajax操作XML文件的技巧,具有一定參考借鑒價值,需要的朋友可以參考下2015-03-03JS中IP地址與整數(shù)相互轉(zhuǎn)換的實現(xiàn)代碼
這篇文章主要介紹了JS中IP地址與整數(shù)相互轉(zhuǎn)換的實現(xiàn)代碼,需要的朋友可以參考下2017-04-04JavaScript實現(xiàn)事件總線(Event?Bus)的方法詳解
Event?Bus?事件總線,通常作為多個模塊間的通信機制,相當(dāng)于一個事件管理中心。本文將介紹如何在JavaScript中實現(xiàn)事件總線,需要的可以參考一下2022-05-05touch.js 拖動、縮放、旋轉(zhuǎn) (鼠標(biāo)手勢)功能代碼
這篇文章主要介紹了touch.js 拖動、縮放、旋轉(zhuǎn) (鼠標(biāo)手勢)功能,代碼簡單易懂,非常不錯,具有參考借鑒價值,需要的朋友可以參考下2017-02-02javascript smipleChart 簡單圖標(biāo)類
支持 線性圖 區(qū)域圖 柱狀圖 餅圖 支持多瀏覽器 用到的是svg vml 之后加上 多層餅圖 分段圖 和組合圖2011-01-01