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

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