AVt天堂网 手机版,亚洲va久久久噜噜噜久久4399,天天综合亚洲色在线精品,亚洲一级Av无码毛片久久精品

當前位置:首頁 > 科技  > 軟件

Vue3問題:如何實現(xiàn)拼圖驗證+郵箱登錄功能?前后端!

來源: 責(zé)編: 時間:2024-02-29 14:43:48 189觀看
導(dǎo)讀1. 需求分析文件上傳,可以說是我們在項目中最常用的功能之一。文件上傳一般有兩種形式:點擊上傳和拖拽上傳。而上傳的內(nèi)容,又大體包括:文件和文件夾。在項目中,我們一般都會直接選擇使用UI庫提供的上傳組件,簡單配置一下必

OaV28資訊網(wǎng)——每日最新資訊28at.com

1. 需求分析

文件上傳,可以說是我們在項目中最常用的功能之一。OaV28資訊網(wǎng)——每日最新資訊28at.com

文件上傳一般有兩種形式:點擊上傳和拖拽上傳。而上傳的內(nèi)容,又大體包括:文件和文件夾。OaV28資訊網(wǎng)——每日最新資訊28at.com

在項目中,我們一般都會直接選擇使用UI庫提供的上傳組件,簡單配置一下必要的屬性,就實現(xiàn)了文件上傳功能,至于組件底層實現(xiàn)的原理,是絲毫不知。OaV28資訊網(wǎng)——每日最新資訊28at.com

所以今天,針對文件和文件夾的拖拽上傳功能,我整理了一下具體的實現(xiàn),很簡單一起瞧瞧。OaV28資訊網(wǎng)——每日最新資訊28at.com

OaV28資訊網(wǎng)——每日最新資訊28at.com

2. 問題實現(xiàn)

先普及一下元素拖拽的幾個API知識點,再放上文件拖拽上傳的實現(xiàn)代碼,并做簡單的描述,最后做小結(jié)。OaV28資訊網(wǎng)——每日最新資訊28at.com

(1)拖拽的6個API

元素拖拽的6個API分別是:dragenter、dragover、drop 以及dragstart、drag、dragend。OaV28資訊網(wǎng)——每日最新資訊28at.com

ondragstart 事件:該事件在拖動操作開始時觸發(fā),即拖動操作的起點。通常在該事件的處理函數(shù)中設(shè)置拖動的數(shù)據(jù)和效果。OaV28資訊網(wǎng)——每日最新資訊28at.com

drag 事件:該事件在元素正在被拖動時持續(xù)觸發(fā),即在拖動過程中。可以在該事件的處理函數(shù)中執(zhí)行一些實時的操作,例如更新元素的位置或顯示一些效果。OaV28資訊網(wǎng)——每日最新資訊28at.com

dragend 事件:該事件在拖動操作結(jié)束時觸發(fā),即拖動操作的終點。通常在該事件的處理函數(shù)中執(zhí)行一些清理操作或其他邏輯。OaV28資訊網(wǎng)——每日最新資訊28at.com

這三個事件通常用于控制拖動元素起始、過程和結(jié)束階段的行為。OaV28資訊網(wǎng)——每日最新資訊28at.com

OaV28資訊網(wǎng)——每日最新資訊28at.com

ondragenter 事件:該事件在拖動元素進入目標元素的范圍時觸發(fā)。可以在該事件的處理函數(shù)中執(zhí)行一些顯示效果或狀態(tài)改變等操作。OaV28資訊網(wǎng)——每日最新資訊28at.com

ondragover 事件:該事件在拖動元素在目標元素上移動時持續(xù)觸發(fā),即在拖動元素在目標元素上懸停期間。通常需要阻止默認的拖放行為,以便允許在目標元素上釋放。OaV28資訊網(wǎng)——每日最新資訊28at.com

ondrop 事件:該事件在拖動元素在目標元素上釋放時觸發(fā)。可以在該事件的處理函數(shù)中獲取拖動的數(shù)據(jù)并執(zhí)行相應(yīng)的操作。OaV28資訊網(wǎng)——每日最新資訊28at.com

這三個事件通常用于控制目標元素在接受拖動元素時的行為。OaV28資訊網(wǎng)——每日最新資訊28at.com

(2)文件拖拽上傳實現(xiàn)

元素拖拽的6個API,這里我們只需要使用dragover、drop這兩個,就能實現(xiàn)文件拖拽上傳。OaV28資訊網(wǎng)——每日最新資訊28at.com

下面簡單描述一下實現(xiàn)過程,具體細節(jié)大家看代碼就好,原理很簡單。OaV28資訊網(wǎng)——每日最新資訊28at.com

先獲取頁面中的 DropFrame 元素,再為其添加兩個事件監(jiān)聽器。OaV28資訊網(wǎng)——每日最新資訊28at.com

dragover 事件監(jiān)聽器:當有元素拖拽到 DropFrame 區(qū)域時觸發(fā),用于指定拖放操作的效果。這里必須阻止事件默認行為,否則文件是拖不上去的,會被瀏覽器所阻止。OaV28資訊網(wǎng)——每日最新資訊28at.com

drop 事件監(jiān)聽器:當在 DropFrame 區(qū)域釋放拖拽的元素時觸發(fā),用于處理拖放完成后的操作。內(nèi)部通過遍歷e.dataTransfer.items ,判斷文件或文件夾,文件就直接獲取File對象,文件夾則遞歸獲取內(nèi)部文件的File對象,最后依次單獨上傳服務(wù)器。OaV28資訊網(wǎng)——每日最新資訊28at.com

完整實現(xiàn)代碼如下,復(fù)制即可使用。OaV28資訊網(wǎng)——每日最新資訊28at.com

<!DOCTYPE html><html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><title></title><style>#DropFrame {width: 360px;height: 120px;background-color: #b8deff;border: solid 1px #3470ff;}</style></head><body><!-- 拖拽區(qū)域 --><div id="DropFrame">文件拖到這里上傳</div></body><script>let dropFrame = document.getElementById('DropFrame');// 拖動元素在目標元素上懸停期間dropFrame.addEventListener('dragover', (e) => {// 阻止默認事件和冒泡 必須寫e.stopPropagation();e.preventDefault();});// 拖動元素在目標元素上釋放時觸發(fā)dropFrame.addEventListener('drop', (e) => {// 阻止默認事件和冒泡 必須寫e.stopPropagation();e.preventDefault();// 文件上傳處理邏輯let items = e.dataTransfer.items;for (const item of items) {// 提取Entry對象const entry = item.webkitGetAsEntry();if (entry.isFile) {// 處理文件,拿到File文件entry.file((file) => {console.log(file, 'file');// 上傳文件到服務(wù)器// var formData = new FormData();// formData.append('file', file);// axios.post('/upload', formData, {})})} else {// 處理文件夾,拿到FileEntry對象const reader = entry.createReader()reader.readEntries((entries) => {reHandleFile(entries)})}}});// 如果文件夾是多級,則遞歸讀取const reHandleFile = (entries) => {for (const entry of entries) {if (entry.isFile) {// 處理文件,拿到File文件entry.file((file) => {console.log(file, 'file');// 上傳文件到服務(wù)器// var formData = new FormData();// formData.append('file', file);// axios.post('/upload', formData, {})})} else {// 處理文件夾,拿到FileEntry對象const reader = entry.createReader()reader.readEntries((entries) => {// 遞歸reHandleFile(entries)})}}}</script></html>

(3)小結(jié)

本文簡單介紹了,元素拖拽的6個API,以及文件拖拽上傳的實現(xiàn)過程。OaV28資訊網(wǎng)——每日最新資訊28at.com

元素拖拽的6個API,這里我們只需要使用dragover、drop這兩個,就能實現(xiàn)文件拖拽上傳。OaV28資訊網(wǎng)——每日最新資訊28at.com

值得注意的是,必須阻止事件默認行為,否則文件是拖不上去的,會被瀏覽器所阻止。OaV28資訊網(wǎng)——每日最新資訊28at.com

本文鏈接:http://www.tebozhan.com/showinfo-26-75359-0.htmlVue3問題:如何實現(xiàn)拼圖驗證+郵箱登錄功能?前后端!

聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: 如何在Rust中操作JSON,你學(xué)會了嗎?

下一篇: 強烈推薦強大的規(guī)則引擎框架LiteFlow

標簽:
  • 熱門焦點
  • K60 Pro官方停產(chǎn) 第三方瞬間漲價

    雖然沒有官方宣布,但Redmi的一些高管也已經(jīng)透露了,Redmi K60 Pro已經(jīng)停產(chǎn)且不會補貨,這一切都是為了即將到來的K60 Ultra鋪路,屬于廠家的正常操作。但有意思的是該機在停產(chǎn)之后
  • 石頭智能洗地機A10 Plus體驗:雙向自清潔治好了我的懶癌

    一、前言和介紹專為家庭請假懶人而生的石頭科技在近日又帶來了自己的全新旗艦新品,石頭智能洗地機A10 Plus。從這個產(chǎn)品名上就不難看出,這次石頭推出的并不是常見的掃地機器
  • 7月安卓手機性能榜:紅魔8S Pro再奪榜首

    7月份的手機市場風(fēng)平浪靜,除了紅魔和努比亞帶來了兩款搭載驍龍8Gen2領(lǐng)先版處理器的新機之外,別的也想不到有什么新品了,這也正常,通常6月7月都是手機廠商修整的時間,進入8月份之
  • 6月安卓手機性能榜:vivo/iQOO霸占旗艦排行榜前三

    2023年上半年已經(jīng)正式過去了,我們也迎來了安兔兔V10版本,在新的驍龍8Gen3和天璣9300發(fā)布之前,性能榜的榜單大體會以驍龍8Gen2和天璣9200+為主,至于那顆3.36GHz的驍龍8Gen2領(lǐng)先
  • 印度登月最關(guān)鍵一步!月船三號今晚進入環(huán)月軌道

    8月5日消息,據(jù)印度官方消息,月船三號將于北京時間今晚21時30分左右開始近月制動進入環(huán)月軌道。這是該探測器能夠成功的最關(guān)鍵步驟之一,如果成功將開始圍
  • 大廠卷向扁平化

    來源:新熵作者丨南枝 編輯丨月見大廠職級不香了。俗話說,兵無常勢,水無常形,互聯(lián)網(wǎng)企業(yè)調(diào)整職級體系并不稀奇。7月13日,淘寶天貓集團啟動了近年來最大的人力制度改革,目前已形成一
  • 阿里大調(diào)整

    來源:產(chǎn)品劉有媒體報道稱,近期淘寶天貓集團啟動了近年來最大的人力制度改革,涉及員工績效、層級體系等多個核心事項,目前已形成一個初步的&ldquo;征求意見版&rdquo;:1、取消P序列
  • 三星Galaxy Z Fold5官方渲染圖曝光:13.4mm折疊厚度依舊感人

    據(jù)官方此前宣布,三星將于7月26日在韓國首爾舉辦Unpacked活動,屆時將帶來帶來包括Galaxy Buds 3、Galaxy Watch 6、Galaxy Tab S9、Galaxy Z Flip 5、
  • iQOO Neo8系列或定檔5月23日:首發(fā)天璣9200+ 安卓跑分王者

    去年10月,iQOO推出了iQOO Neo7系列機型,不僅搭載了天璣9000+,而且是同價位唯一一款天璣9000+直屏旗艦,一經(jīng)上市便受到了用戶的廣泛關(guān)注。在時隔半年后,
Top