input文件上傳的一些技巧

前言

在我們日常的開發中,避免不了上傳文件這個功能。有時候還必須在上傳文件的時候進行限制,比如下面的例子:

1、不做限制,例如:

<input type="file">

點擊之後顯示:
在這裏插入圖片描述

2、只能上傳圖片,並且指定格式爲png,代碼如下:

<input type="file"  accept="image/png" >

點擊後顯示:
在這裏插入圖片描述
好了,篩選完成。但是,這個accept中的是什麼玩意?答案就是MIME

MIME (Multipurpose Internet Mail Extensions) 是描述消息內容類型的因特網標準。 MIME
消息能包含文本、圖像、音頻、視頻以及其他應用程序專用的數據。
完整的MIME參考手冊,點擊這裏

3、指定上傳".apk"文件

算是解決了文件篩選的問題,可是在前幾天的一個需求中,就離了譜了。需求如下:

兩種不同的終端要分別限制長傳上不同的類型的文件,終端類型一隻能上傳".zip"文件,終端類型二隻能上傳".apk"。

看到這裏,有朋友就會問,這有什麼離譜的啊,去MIME手冊查查看就完事兒了。我也是這麼想的,然後就去參考手冊翻,發現裏面居然沒有".apk"的MIME類型。這怎麼辦?
辦法總是有的,首先,我們想到的是,獲取文件的名稱,利用文件的擴展名來進行篩選:

<!-- html代碼 -->
<input type="file"  id="fileDemo"}/> 
<input type="botton" value="確定"  id="fileBtn" onclick="file();"/> 
// js代碼
function file(){
    const fileName = document.getElementById('fileField').files[0].name;
    const tempArr = fileName.split('.');
    const suffix = tempArr[tempArr.length - 1];
    console.log(suffix); //apk
}

好了,現在我們可以獲取到文件的擴展名,然後判斷相關文件是否符合上傳的要求,在上傳到服務器之前給出提示信息,使之上傳符合條件的文件。但是總覺的這樣不統一,也不是很友好。所以再想想辦法,畢竟".apk"文件是這麼的常見,沒有這個的MIME類型有點說不過去吧。到這裏,萬能的網友派上用場了~

擴展名中填寫“.apk”。MIME類型中填寫apk的MIME類application/vnd.android.package-archive

趕緊加上試試:

<input type="file" accept="application/vnd.android.package-archive"  id="fileDemo" />

結果符合了我們的預期,oyeah~
在這裏插入圖片描述

4、需要注意的

當然,我們的擴展名驗證也要加上。而且,上傳文件的類型必須在服務器上進行驗證!!!上述的accept方法其實說到底也只是一種建議,可以幫助我們快速在一個文件夾中的篩選出符合條件的文件,但是我們仍然可以通過點擊上述圖片右下角然後點擊全部文件,這樣其它類型的文件也可以選擇了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章