日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當(dāng)前位置:首頁 > 科技  > 軟件

功能問題:如何實(shí)現(xiàn)文件的拖拽上傳?

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

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

1. 需求分析

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

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

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

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

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

2. 問題實(shí)現(xiàn)

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

(1)拖拽的6個(gè)API

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

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

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

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

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

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

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

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

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

這三個(gè)事件通常用于控制目標(biāo)元素在接受拖動(dòng)元素時(shí)的行為。kfr28資訊網(wǎng)——每日最新資訊28at.com

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

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

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

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

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

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

完整實(shí)現(xiàn)代碼如下,復(fù)制即可使用。kfr28資訊網(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');// 拖動(dòng)元素在目標(biāo)元素上懸停期間dropFrame.addEventListener('dragover', (e) => {// 阻止默認(rèn)事件和冒泡 必須寫e.stopPropagation();e.preventDefault();});// 拖動(dòng)元素在目標(biāo)元素上釋放時(shí)觸發(fā)dropFrame.addEventListener('drop', (e) => {// 阻止默認(rèn)事件和冒泡 必須寫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>

小結(jié)

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

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

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

本文鏈接:http://m.www897cc.com/showinfo-26-79604-0.html功能問題:如何實(shí)現(xiàn)文件的拖拽上傳?

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

上一篇: 2024年,你需要掌握的 JavaScript 面試問題和答案

下一篇: React為什么要廢棄ComponentWillMount、ReceiveProps和Update這三個(gè)生命周期

標(biāo)簽:
  • 熱門焦點(diǎn)
Top 日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不
亚洲已满18点击进入久久| 欧美1区视频| 日韩视频三区| 亚洲精品综合久久中文字幕| 亚洲精品久久久蜜桃| 亚洲精品美女91| 日韩一本二本av| 一区二区三区成人精品| 亚洲一区二区三区在线视频| 欧美一区综合| 久久久www成人免费毛片麻豆| 久久先锋影音av| 欧美阿v一级看视频| 欧美精品一区三区| 欧美成人第一页| 欧美日韩国产小视频| 国产精品狠色婷| 国产欧美视频一区二区| 韩国在线视频一区| 国产日产精品一区二区三区四区的观看方式| 国产真实久久| 久久一二三四| 欧美~级网站不卡| 欧美成人精品影院| 欧美成人一区二区三区在线观看 | 亚洲黑丝在线| 亚洲欧洲美洲综合色网| 一区二区三区回区在观看免费视频| 午夜电影亚洲| 老牛影视一区二区三区| 欧美激情片在线观看| 欧美午夜精品伦理| 国产精品免费一区二区三区在线观看 | 亚洲欧美日韩国产中文| 久久久精彩视频| 欧美激情国产日韩| 欧美日韩亚洲系列| 欧美视频第二页| 激情文学综合丁香| 亚洲精品视频在线看| 午夜影院日韩| 欧美激情第3页| 国产欧美欧美| 亚洲日本一区二区| 一本色道88久久加勒比精品| 久久视频免费观看| 欧美久久在线| 国产亚洲欧洲一区高清在线观看| 99视频精品全国免费| 久久久久久久久久久久久女国产乱| 欧美日韩国产区| 欧美激情影院| 国产一区二区三区四区hd| 亚洲人成亚洲人成在线观看| 久久国内精品视频| 欧美成人在线网站| 欧美天天视频| 1769国内精品视频在线播放| 亚洲欧美日韩在线高清直播| 欧美日韩视频专区在线播放 | 欧美一区二区三区免费看| 欧美大片在线观看| 国产精品久久久久久久久婷婷| 亚洲国产福利在线| 亚洲无毛电影| 欧美国产第一页| 海角社区69精品视频| 宅男噜噜噜66国产日韩在线观看| 六月天综合网| 国产亚洲va综合人人澡精品| 亚洲你懂的在线视频| 欧美精品久久99久久在免费线| 亚洲第一天堂av| 久久精品免视看| 国产精品嫩草影院av蜜臀| 亚洲日本中文字幕免费在线不卡| 久久综合成人精品亚洲另类欧美| 国产欧美一区二区三区沐欲| 亚洲欧美日韩精品久久奇米色影视 | 欧美成人综合网站| 国产精品久久久久久久久免费桃花 | 在线亚洲国产精品网站| 免费黄网站欧美| 激情欧美日韩| 欧美中文字幕精品| 欧美精品久久久久久久免费观看| 亚洲国产精品激情在线观看| 久久久精品国产免大香伊| 国产精品午夜av在线| 亚洲四色影视在线观看| 欧美福利视频在线| 国产在线观看精品一区二区三区| 欧美亚洲自偷自偷| 欧美日韩高清在线观看| 亚洲精品少妇网址| 久久激情五月丁香伊人| 国产欧美日韩专区发布| 亚洲欧美在线磁力| 欧美日韩三级视频| 亚洲第一页在线| 快播亚洲色图| 亚洲福利视频二区| 欧美中文日韩| 国产一区二区三区免费在线观看| 久久久一本精品99久久精品66| 精品51国产黑色丝袜高跟鞋| 免费人成精品欧美精品| 亚洲激情视频网| 欧美成人一区在线| 国内精品久久久久久久果冻传媒 | 日韩午夜剧场| 欧美日韩精品免费观看视频完整| 一区二区三区视频在线播放| 国产精品视频久久久| 亚洲欧美日韩一区在线| 国产精品久久久久高潮| 亚洲一区二区三区四区在线观看 | 欧美在线免费观看| 国产欧美日韩在线播放| 欧美影院精品一区| 国产精品久久久久久久浪潮网站| 欧美一级大片在线观看| 国产在线高清精品| 久久疯狂做爰流白浆xx| 黄色成人av| 欧美成人精品一区二区| 亚洲免费高清| 国产精品白丝jk黑袜喷水| 香蕉精品999视频一区二区| 国产偷国产偷精品高清尤物| 鲁鲁狠狠狠7777一区二区| 亚洲人成艺术| 国产精品看片资源| 亚洲欧美视频一区二区三区| 狠狠综合久久av一区二区老牛| 欧美精品日韩综合在线| 亚洲图片欧洲图片av| 国产日韩欧美三级| 欧美中文字幕第一页| 影音先锋欧美精品| 久热综合在线亚洲精品| 亚洲伦伦在线| 国产欧美日本一区视频| 久久全球大尺度高清视频| 亚洲激情电影在线| 欧美日韩黄色大片| 亚洲午夜激情网页| 国产精品网站一区| 欧美在线免费视屏| 在线播放豆国产99亚洲| 欧美三级在线视频| 亚洲一区二区综合| 国产区欧美区日韩区| 欧美国产免费| 午夜精品国产更新| 狠狠色综合网站久久久久久久| 欧美三级视频在线播放| 久久国产免费看| 日韩视频中文字幕| 国产精品成人在线| 欧美亚洲一级| 亚洲精品美女久久久久| 国产拍揄自揄精品视频麻豆| 欧美日韩高清免费| 午夜在线视频观看日韩17c| 亚洲高清网站| 国产久一道中文一区| 男女av一区三区二区色多| 亚洲综合清纯丝袜自拍| 亚洲黄色高清| 国产日产亚洲精品| 米奇777超碰欧美日韩亚洲| 亚洲一区二区三区激情| 亚洲韩国精品一区| 国产精品久久久一本精品| 欧美不卡一区| 欧美中文字幕在线| 亚洲精品国产精品久久清纯直播| 国产精品自拍网站| 免费成人美女女| 久久成人一区二区| 亚洲精品免费在线| 国产日韩视频一区二区三区| 国产精品国产a| 欧美精品在线观看| 香蕉av777xxx色综合一区| av成人激情| 亚洲区国产区| 一区二区在线视频| 欧美午夜女人视频在线| 欧美黄网免费在线观看| 久久久久久香蕉网| 亚洲视频精品| 亚洲国产欧美在线人成| 国产一区美女| 国产麻豆综合| 国产精品捆绑调教| 欧美jizzhd精品欧美巨大免费| 久久久亚洲高清| 久久精品理论片| 欧美在线播放视频| 日韩一区二区精品视频| 最新亚洲电影| 亚洲福利视频网|