HTML5實(shí)現(xiàn)同時(shí)選擇多個(gè)文件夾上傳的使用示例

HTML5的上傳API可以支持同時(shí)選擇多個(gè)文件和選擇單個(gè)文件夾,但不支持同時(shí)選擇多個(gè)文件夾。如果想同時(shí)選擇多個(gè)文件夾,那只能另辟蹊徑,不使用<input type="file">,
而是使用拖放API來實(shí)現(xiàn)選擇多個(gè)文件夾,再執(zhí)行上傳處理。
選擇多個(gè)文件
想選擇多個(gè)文件很簡單,使用<input type="file" multiple>
可以讓用戶選擇多個(gè)文件。通過將multiple
屬性添加到<input type="file">
元素中,用戶就可以在文件選擇對話框中選擇多個(gè)文件。當(dāng)用戶選擇多個(gè)文件時(shí),這些文件將作為一個(gè)文件列表一起提交。
例如,以下代碼演示了如何創(chuàng)建一個(gè)允許選擇多個(gè)文件的文件上傳輸入框:
<input type="file" multiple>
選擇文件夾
如果想選擇單個(gè)文件夾也很簡單,使用<input type="file" webkitdirectory>
可以讓用戶選擇文件夾。通過將webkitdirectory
屬性添加到<input type="file">
元素中,用戶就可以在文件選擇對話框中選擇文件夾,但只能選擇一個(gè)文件夾。
例如,以下代碼演示了如何創(chuàng)建一個(gè)允許選擇文件夾的文件上傳輸入框:
<input type="file" webkitdirectory>
選擇多個(gè)文件夾
雖然`<input type="file">`元素允許用戶選擇多個(gè)文件,也可以選擇單個(gè)文件夾,但它不支持選擇多個(gè)文件夾。
那么,如果你需要選擇多個(gè)文件夾,就可以使用拖放API來實(shí)現(xiàn)。用戶可以將多個(gè)文件夾拖放到指定的區(qū)域,并通過JavaScript代碼處理這些文件夾。
以下是一個(gè)示例代碼,演示如何使用拖放API來選擇多個(gè)文件夾:
<div id="dropzone">將文件夾拖放到此處</div> <script> const dropzone = document.getElementById('dropzone'); dropzone.addEventListener('dragover', function(event) { ? event.preventDefault(); ? dropzone.classList.add('dragover'); }); dropzone.addEventListener('dragleave', function(event) { ? event.preventDefault(); ? dropzone.classList.remove('dragover'); }); dropzone.addEventListener('drop', function(event) { ? event.preventDefault(); ? dropzone.classList.remove('dragover'); ? const items = event.dataTransfer.items; ? for (let i = 0; i < items.length; i++) { ? ? const item = items[i]; ? ? if (item.kind === 'file' && item.webkitGetAsEntry().isDirectory) { ? ? ? const directory = item.webkitGetAsEntry(); ? ? ? console.log(directory.name); ? ? ? // 在這里可以對每個(gè)文件夾進(jìn)行處理,比如遍歷文件夾中的文件 ? ? } ? } }); </script>
在上面的示例中,我們創(chuàng)建了一個(gè)拖放區(qū)域`<div id="dropzone">`,當(dāng)用戶將文件夾拖放到該區(qū)域時(shí),會(huì)觸發(fā)`dragover`、`dragleave`和`drop`事件。我們可以使用這些事件來處理拖放的文件夾。
在`drop`事件的處理程序中,我們使用`event.dataTransfer.items`獲取拖放的項(xiàng)目列表。然后,我們可以遍歷這個(gè)項(xiàng)目列表,并檢查每個(gè)項(xiàng)目是否為文件夾。如果是文件夾,我們可以進(jìn)一步處理它。
請注意,拖放API的兼容性可能因?yàn)g覽器而異,特別是在處理文件夾時(shí)。因此,在實(shí)際使用時(shí),你可能需要進(jìn)行更多的測試和兼容性處理。
到此這篇關(guān)于HTML5實(shí)現(xiàn)同時(shí)選擇多個(gè)文件夾上傳的使用示例的文章就介紹到這了,更多相關(guān)HTML5多個(gè)文件夾上傳內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持腳本之家!
相關(guān)文章
- 這篇文章主要介紹了HTML5拖拽文件上傳的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)2021-03-04
- 這篇文章主要介紹了HTML5 拖拽批量上傳文件的示例代碼的相關(guān)資料,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-03-28
- 這篇文章主要介紹了HTML5新特性之type=file文件上傳功能,需要的朋友可以參考下2018-02-02
- HTML5 中提供的文件API在前端中有著豐富的應(yīng)用,上傳、下載、讀取內(nèi)容等在日常的交互中很常見。而且在各個(gè)瀏覽器的兼容也比較好,包括移動(dòng)端,除了 IE 只支持 IE10 以上的2017-07-03
- 本文簡單介紹利用Html5的FormData實(shí)現(xiàn)文件的異步上傳,還可以實(shí)現(xiàn)上傳進(jìn)度條和文件大小驗(yàn)證等,代碼簡單易懂,非常不錯(cuò),具有參考借鑒價(jià)值,需要的的朋友參考下吧2017-05-19
- 本篇文章主要介紹了HTML5拖拉上傳文件的簡單實(shí)例,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-01-11
使用Html5實(shí)現(xiàn)異步上傳文件,支持跨域,帶有上傳進(jìn)度條
下面小編就為大家?guī)硪黄褂肏tml5實(shí)現(xiàn)異步上傳文件,支持跨域,帶有上傳進(jìn)度條。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2016-09-17移動(dòng)端HTML5實(shí)現(xiàn)文件上傳功能【附代碼】
下面小編就為大家?guī)硪黄苿?dòng)端HTML5實(shí)現(xiàn)文件上傳功能【附代碼】。小編覺得聽錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2016-03-25- 多文件的上傳在以前或許實(shí)現(xiàn)起來會(huì)很復(fù)雜,不過自從html5的出現(xiàn),讓其變得非常容易,下面有個(gè)不錯(cuò)的示例,大家可以參考下2014-02-13