精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

10個對Web開發人員有用的HTML文件上傳技巧

開發 前端
在本文中,我們將討論 HTML文件上傳支持的10種用法,希望對你有用。

[[351396]]

 簡介

上傳文件功能可以說是項目經常出現的需求。從在社交媒體上上傳照片到在求職網站上發布簡歷,文件上傳無處不在。在本文中,我們將討論 HTML文件上傳支持的10種用法,希望對你有用。

1. 單文件上傳

我們可以將input 類型指定為file,以在Web應用程序中使用文件上傳功能。

  1. <input type="file" id="file-uploader"

input filte 提供按鈕上傳一個或多個文件。默認情況下,它使用操作系統的本機文件瀏覽器上傳單個文件。成功上傳后,File API 使得可以使用簡單的 JS 代碼讀取File對象。要讀取File對象,我們需要監聽 change事件。

首先,通過id獲取文件上傳的實例:

  1. const fileUploader = document.getElementById('file-uploader'); 

然后添加一個change 事件偵聽器,以在上傳完成后讀取文件對象, 我們從event.target.files屬性獲取上傳的文件信息:

  1. fileUploader.addEventListener('change', (event) => { 
  2.   const files = event.target.files; 
  3.   console.log('files', files); 
  4. }); 

在控制臺中觀察輸出結果,這里關注一下FileList數組和File對象,該對象具有有關上傳文件的所有元數據信息。


 如果大家看到這里,有點激動,想手賤一下,可以 CodePen 玩玩,地址:https://codepen.io/atapas/pen/rNLOyRm

2. 多文件上傳

如果我們想上傳多個文件,需要在標簽上添加 multiple 屬性:

  1. <input type="file" id="file-uploader" multiple /> 

現在,我們可以上傳多個文件了,以前面事例為基礎,選擇多個文件上傳后,觀察一下控制臺的變化:

如果大家看到這里,有點激動,想手賤一下,可以 CodePen 玩玩,地址:https://codepen.io/atapas/pen/MWeamYp

3.了解文件元數據

每當我們上傳文件時,File對象都有元數據信息,例如file name,size,last update time,type 等等。這些信息對于進一步的驗證和特殊處理很有用。

  1. const fileUploader = document.getElementById('file-uploader'); 
  2.  
  3. // 聽更 change 件并讀取元數據 
  4. fileUploader.addEventListener('change', (event) => { 
  5.   // 獲取文件列表數組 
  6.   const files = event.target.files; 
  7.  
  8.   // 遍歷并獲取元數據 
  9.   for (const file of files) { 
  10.     const name = file.name
  11.     const type = file.type ? file.type: 'NA'
  12.     const size = file.size
  13.     const lastModified = file.lastModified; 
  14.     console.log({ file, name, type, size, lastModified }); 
  15.   } 
  16. }); 

 下面是單個文件上傳的輸出結果:

如果大家看到這里,有點激動,想手賤一下,可以 CodePen 玩玩,地址:https://codepen.io/atapas/pen/gOMaRJv

4.了解 accept 屬性

我們可以使用accept屬性來限制要上載的文件的類型,如果只想上傳的文件格式是 .jpg,.png 時,可以這么做:

  1. <input type="file" id="file-uploader" accept=".jpg, .png" multiple> 

在上面的代碼中,只能選擇后綴是.jpg和.png的文件。

如果大家看到這里,有點激動,想手賤一下,可以 CodePen 玩玩,地址:https://codepen.io/atapas/pen/OJXymRP

5. 管理文件內容

成功上傳文件后顯示文件內容,站在用戶的角度上,如果上傳之后,沒有一個預覽的,就很奇怪也不體貼。

我們可以使用FileReader對象將文件轉換為二進制字符串。然后添加load 事件偵聽器,以在成功上傳文件時獲取二進制字符串。

  1. // FileReader 實例 
  2. const reader = new FileReader(); 
  3.  
  4. fileUploader.addEventListener('change', (event) => { 
  5.   const files = event.target.files; 
  6.   const file = files[0]; 
  7.  
  8.   reader.readAsDataURL(file); 
  9.  
  10.   reader.addEventListener('load', (event) => { 
  11.     const img = document.createElement('img'); 
  12.     imageGrid.appendChild(img); 
  13.     img.src = event.target.result; 
  14.     img.alt = file.name
  15.   }); 
  16. }); 

 如果大家看到這里,有點激動,想手賤一下,可以 CodePen 玩玩,地址:https://codepen.io/atapas/pen/zYBvdjZ

6.驗證文件大小

如果用戶上傳圖片過大,為了不讓服務器有壓力,我們需要限制圖片的大小,下面是允許用戶上傳小于 1M 的圖片,如果大于 1M 將上傳失敗。 

  1. fileUploader.addEventListener('change', (event) => { 
  2.   // Read the file size 
  3.   const file = event.target.files[0]; 
  4.   const size = file.size
  5.  
  6.   let msg = ''
  7.  
  8.  // 檢查文件大小是否大于1MB 
  9.   if (size > 1024 * 1024) { 
  10.       msg = `<span style="color:red;">The allowed file size is 1MB. The file you are trying to upload is of ${returnFileSize(size)}</span>`; 
  11.   } else { 
  12.       msg = `<span style="color:green;"> A ${returnFileSize(size)} file has been uploaded successfully. </span>`; 
  13.   } 
  14.   feedback.innerHTML = msg; 
  15. }); 

 如果大家看到這里,有點激動,想手賤一下,可以 CodePen 玩玩,地址:https://codepen.io/atapas/pen/pobjMKv

7. 顯示文件上傳進度

更好的用戶體驗是讓用戶知道文件上傳進度,前面我們用過了FileReader以及讀取和加載文件的事件。 

  1. const reader = new FileReader(); 

FileReader還有一個progress 事件,表示當前上傳進度,配合HTML5的progress標簽,我們來模擬一下文件的上傳進度。

  1. reader.addEventListener('progress', (event) => { 
  2.   if (event.loaded && event.total) { 
  3.     // 計算完成百分比 
  4.     const percent = (event.loaded / event.total) * 100; 
  5.     // 將值綁定到 `progress`標簽 
  6.     progress.value = percent; 
  7.   } 
  8. }); 

 如果大家看到這里,有點激動,想手賤一下,可以 CodePen 玩玩,地址:https://codepen.io/atapas/pen/eYzpwYj

8. 怎么上傳目錄上傳?

我們可以上傳整個目錄嗎?嗯,這是可能的,但有一些限制。有一個叫做webkitdirectory的非標準屬性(目前只有谷歌瀏覽器還有Microsoft Edge支持按照文件夾進行上傳),它允許我們上傳整個目錄。

  • 目前只有谷歌瀏覽器還有Microsoft Edge支持按照文件夾進行上傳,具體可以看下百度云盤的網頁版的上傳按鈕,在火狐下就支持按照文件進行上傳,而在谷歌和Edge下,就會給用戶提供一個下拉,讓用戶選擇是根據文件進行上傳還是根據文件夾進行上傳。
  1. <input type="file" id="file-uploader" webkitdirectory /> 

用戶必須需要確認才能上傳目錄

用戶單擊“上傳”按鈕后,就會進行上傳。這里要注意的重要一點。FileList數組將以平面結構的形式包含有關上載目錄中所有文件的信息。對于每個File對象,webkitRelativePath屬性表示目錄路徑。

例如,上傳一個主目錄及其下的其他文件夾和文件:

 現在,File 對象將將webkitRelativePath填充為:

 如果大家看到這里,有點激動,想手賤一下,可以 CodePen 玩玩,地址:https://codepen.io/atapas/pen/dyXYRKp

9. 拖拽上傳

不支持文件上傳的拖拽就有點 low 了,不是嗎?我們來看看如何通過幾個簡單的步驟實現這一點。

首先,創建一個拖放區域和一個可選的區域來顯示上傳的文件內容。

  1. <div id="container"
  2.   <h1>Drag & Drop an Image</h1> 
  3.   <div id="drop-zone"
  4.     DROP HERE 
  5.   </div> 
  6.  
  7.   <div id="content"
  8.     Your image to appear here.. 
  9.   </div> 
  10.  
  11. </div> 

通過它們各自的ID獲取dropzone和content 區域。

  1. const dropZone = document.getElementById('drop-zone'); 
  2.  const content = document.getElementById('content'); 

 添加一個dragover 事件處理程序,以顯示將要復制的內容的效果: 

  1. dropZone.addEventListener('dragover', event => { 
  2.   event.stopPropagation(); 
  3.   event.preventDefault(); 
  4.   event.dataTransfer.dropEffect = 'copy'
  5. }); 

 

接下來,我們需要一個drop事件監聽器來處理。

  1. dropZone.addEventListener('drop', event => { 
  2.   // Get the files 
  3.   const files = event.dataTransfer.files; 
  4.  
  5.  
  6. }); 

如果大家看到這里,有點激動,想手賤一下,可以 CodePen 玩玩,地址:https://codepen.io/atapas/pen/ExyVoXN

10. 使用objectURL處理文件

有一個特殊的方法叫做URL.createobjecturl(),用于從文件中創建唯一的URL。還可以使用URL.revokeObjectURL()方法來釋放它。

URL.revokeObjectURL() 靜態方法用來釋放一個之前已經存在的、通過調用 URL.createObjectURL() 創建的 URL 對象。當你結束使用某個 URL 對象之后,應該通過調用這個方法來讓瀏覽器知道不用在內存中繼續保留對這個文件的引用了。

  1. fileUploader.addEventListener('change', (event) => { 
  2.   const files = event.target.files; 
  3.   const file = files[0]; 
  4.    
  5.   const img = document.createElement('img'); 
  6.   imageGrid.appendChild(img); 
  7.   img.src = URL.createObjectURL(file); 
  8.   img.alt = file.name
  9. }); 

 如果大家看到這里,有點激動,點這里,可以 CodePen 玩玩,地址:https://codepen.io/atapas/pen/BazzaoN

總結

無論何時,如果你還想學習本文涉及的一些知識,你可以在這里嘗試。

https://html-file-upload.netlify.app/

 

責任編輯:姜華 來源: 今日頭條
相關推薦

2023-08-30 08:01:37

前端CSS

2023-05-22 14:57:47

2023-06-20 07:30:46

CSS3HTML5Web

2015-09-21 09:34:57

2012-07-20 10:46:44

Web

2020-11-09 08:06:37

HTML技巧上傳

2021-01-13 22:50:21

開發Web工具

2022-07-04 08:00:00

Web開發人員編程習慣程序員

2023-02-06 18:27:00

開發人員語言

2015-10-13 10:00:04

Web開發人員網站

2019-07-12 13:59:21

Docker軟件技術

2013-06-14 08:47:45

2012-11-27 10:23:18

CSSWeb開發

2018-10-12 22:50:20

機器學習API人工智能

2018-11-21 12:21:33

Ruby框架Web應用

2021-12-10 13:06:37

低代碼無代碼開發人員

2009-05-18 16:58:56

Java代碼片段

2016-03-09 12:11:33

Web開發人員簡單步驟

2015-02-10 09:24:04

Web開發JavaScript工具

2013-06-13 10:15:20

WebWeb工具Web開發人員
點贊
收藏

51CTO技術棧公眾號

午夜视频一区在线观看| 国产一区999| 亚洲日韩中文字幕在线播放| 欧美美女一级片| 国产一二区在线| 成人精品免费看| 国产精品成人aaaaa网站| 麻豆网址在线观看| 欧美日韩一区二区三区四区不卡| 欧美亚洲国产一区二区三区| 精品免费久久久久久久| 美女欧美视频在线观看免费| 久久成人羞羞网站| 97色在线观看| 日本精品人妻无码77777| 亚洲国产精品嫩草影院久久av| 欧美色精品天天在线观看视频| 无码人妻精品一区二区蜜桃网站| 国产在线视频资源| 成人视屏免费看| 国产精品亚洲精品| 久久黄色精品视频| 久久久人成影片免费观看| 亚洲精品日韩欧美| 久久久男人的天堂| 91视频亚洲| 日本道在线观看一区二区| 日韩一级性生活片| 亚洲图区一区| 国产精品国产三级国产普通话蜜臀 | 亚洲日韩中文字幕在线播放| jjzz黄色片| 亚洲国产精品免费视频| 欧美日本一道本| 91色国产在线| 性欧美1819sex性高清| 香蕉影视欧美成人| 最新av网址在线观看| av国产在线观看| 久久久美女毛片| 农村寡妇一区二区三区| 蜜桃av中文字幕| 国产成人在线观看| 51精品国产人成在线观看 | 国产理论在线| 洋洋av久久久久久久一区| 正在播放久久| 免费在线观看黄色| 中文字幕一区二区三区不卡在线 | 福利精品视频| 性一交一乱一伧老太| 国产乱码精品1区2区3区| 成人免费自拍视频| 97精品人妻一区二区三区| 日韩有码一区二区三区| 日本亚洲欧洲色| 亚洲中文字幕无码爆乳av| 欧美一级网站| 国产999精品久久久| 在线能看的av| 久久一区亚洲| 国产精品久久av| 91精品国自产| 国产一区二区三区日韩| 3d动漫啪啪精品一区二区免费| 国产免费一区二区三区免费视频| 韩国视频一区二区| 99精彩视频| 四虎免费在线观看| 久久看人人爽人人| 亚洲国产一区在线| 黄网页免费在线观看| 自拍视频在线观看一区二区| 神马午夜伦理影院| 国产美女福利在线观看| 午夜精品在线看| 久草精品在线播放| 伊人久久精品| 亚洲国产精品视频在线观看| 久久精品成人av| 日韩精品一区二区三区免费观看| 中文字幕日韩精品在线| 希岛爱理中文字幕| 日韩视频不卡| 国产精品爽爽爽爽爽爽在线观看| 国产精品无码天天爽视频| 国产传媒欧美日韩成人| 美日韩精品免费| 黄色动漫在线| 欧美日韩一区二区精品| 嫩草影院国产精品| www.爱久久| 欲色天天网综合久久| 欧美日韩大片在线观看| 六月婷婷一区| 亚洲一区二区三区视频| 五月天婷婷社区| 中文字幕在线不卡一区| 日韩 欧美 视频| jvid一区二区三区| 亚洲国产精品视频在线观看| 国产精品久久久视频| 欧美日韩免费| 国产精品www网站| 成人免费视频国产免费麻豆| 国产欧美日产一区| 国产96在线 | 亚洲| 亚洲伦理网站| 亚洲欧洲国产精品| 国产中文字幕免费| 精品一区在线看| 久久综合精品一区| 欧美日韩在线视频免费观看| 欧美综合一区二区三区| 人妖粗暴刺激videos呻吟| 国产精品成人a在线观看| 日本欧美中文字幕| 少妇人妻偷人精品一区二区| 中文字幕日韩一区| 男女爽爽爽视频| 天天躁日日躁成人字幕aⅴ| 欧美日本在线视频中文字字幕| chinese国产精品| av在线不卡免费看| 中文精品无码中文字幕无码专区| 日本黄色成人| 色天天综合狠狠色| 日韩乱码一区二区三区| 久久综合九色综合97_久久久| 女人帮男人橹视频播放| 麻豆视频久久| 久久视频在线免费观看| 在线观看免费观看在线| 国产丝袜在线精品| 一本大道熟女人妻中文字幕在线 | 蜜桃视频成人m3u8| 亚洲美女av黄| 国产免费观看av| caoporen国产精品视频| 国产一区二区三区在线免费| 亚洲午夜国产成人| 久久精品亚洲国产| 亚洲香蕉在线视频| 国产精品福利av| www.日韩系列| 日韩高清在线播放| 欧美巨大丰满猛性社交| 欧美zozozo| 国产一级一片免费播放| 丰满白嫩尤物一区二区| 国产xxxx振车| 红杏视频成人| 51视频国产精品一区二区| 日韩av资源| 欧美自拍丝袜亚洲| 亚洲ⅴ国产v天堂a无码二区| 日本欧美一区二区三区乱码| 日韩妆和欧美的一区二区| 电影久久久久久| 日韩在线视频观看| 国产情侣激情自拍| 一区二区不卡在线播放| 精品无码人妻少妇久久久久久| 精品1区2区3区4区| 久久66热这里只有精品| 亚洲成人看片| 日韩一级黄色av| 超碰福利在线观看| 精品欧美激情精品一区| 久久精品—区二区三区舞蹈| 蜜桃传媒麻豆第一区在线观看| 在线观看成人一级片| 日韩最新av| 欧美一区二区视频97| 国产精品一级伦理| 欧美一区二区三区四区高清| 久久精品99国产精| 2017欧美狠狠色| 99sesese| 亚洲小说欧美另类婷婷| 欧美一区二区三区精美影视| 精品福利在线| 久久久久久免费精品| 精品视频一二区| 欧美精品 日韩| 亚欧视频在线观看| 中文字幕乱码久久午夜不卡| 香蕉视频在线观看黄| 亚洲影视综合| 亚洲av首页在线| 三级精品视频| 亚洲综合小说区| 成人性教育av免费网址| 久久久成人av| 可以直接在线观看的av| 日韩一区二区三区四区 | 美女羞羞视频在线观看| 精品国产91乱码一区二区三区| 中文字幕亚洲高清| 亚洲视频小说图片| 久久精品老司机| 国产米奇在线777精品观看| 逼特逼视频在线| 欧美一区国产在线| 日本一区二区免费看| 超碰地址久久| 国产欧美日韩最新| 成人教育av| 国模私拍视频一区| 免费av不卡| 亚洲欧美三级在线| 日本成人动漫在线观看| 在线播放一区二区三区| 丁香社区五月天| 午夜欧美在线一二页| 成人涩涩小片视频日本| 久久精品亚洲麻豆av一区二区| 激情小说欧美色图| 极品美女销魂一区二区三区| 国产在线青青草| 黄色日韩在线| 菠萝蜜视频在线观看入口| 久久国产精品亚洲人一区二区三区 | 中文字幕久久熟女蜜桃| 福利一区福利二区微拍刺激| 青娱乐在线视频免费观看| 中文字幕中文在线不卡住| 扒开jk护士狂揉免费| 成人精品在线视频观看| 女人扒开腿免费视频app| 九一九一国产精品| 日本激情视频在线播放| 日韩中文欧美在线| 韩国一区二区av| 国产精品日韩| 免费观看美女裸体网站| 伊人激情综合| www.国产在线视频| 国模大胆一区二区三区| 欧美这里只有精品| 亚洲福利国产| 日本福利视频在线| 9久re热视频在线精品| 福利在线一区二区| 激情婷婷欧美| 少妇高潮毛片色欲ava片| 亚洲夜间福利| 大陆极品少妇内射aaaaa| 日韩视频一区| 97xxxxx| 老鸭窝91久久精品色噜噜导演| 国产精品网站免费| 亚洲永久网站| 日韩av资源在线| 噜噜噜久久亚洲精品国产品小说| 看av免费毛片手机播放| 久久动漫亚洲| 一区二区三区韩国| 久久国产视频网| 亚洲一区二区三区四区精品| 国产精品18久久久久| 五月天丁香社区| 99视频国产精品| 中文字幕第4页| 国产欧美视频一区二区| 亚洲第一综合网| 中文字幕日韩精品一区| 久久伊人成人网| 精品福利视频导航| 性高潮视频在线观看| 欧美精品vⅰdeose4hd| 精品毛片一区二区三区| 日韩av网站导航| 懂色一区二区三区| 麻豆成人在线看| 51精品视频| 国产精品日韩专区| 国产劲爆久久| 日韩av不卡播放| 欧美成人综合| 无码aⅴ精品一区二区三区浪潮 | 国产日韩一区在线| 视频精品二区| 五月天国产一区| 精品99视频| 青青草av网站| 大桥未久av一区二区三区中文| 少妇光屁股影院| 亚洲视频小说图片| 黄色在线视频网址| 欧美一区二区播放| 国产综合视频一区二区三区免费| 久久综合久中文字幕青草| 欧美办公室脚交xxxx| 成人h猎奇视频网站| 欧美一区二区三区红桃小说| 一区二区免费在线视频| 99亚洲视频| 亚洲一级片av| 久久一留热品黄| 免费在线观看av网址| 欧美丝袜自拍制服另类| 日韩中文字幕免费观看| 日韩一区二区三区国产| 欧美调教sm| 超碰97在线资源| 日韩精品第一区| 欧美 日韩精品| 国产69精品久久久久777| www.99热| 欧美色另类天堂2015| 丰满人妻妇伦又伦精品国产| 中文字幕在线亚洲| 中文字幕成在线观看| 成人动漫视频在线观看免费| 日韩在线观看电影完整版高清免费悬疑悬疑 | 国产原创欧美精品| 久草成人在线| 黄色动漫网站入口| 国产麻豆精品在线| gv天堂gv无码男同在线观看| 精品国产乱码久久久久久虫虫漫画| 国产绿帽刺激高潮对白| 这里只有视频精品| 中国色在线日|韩| 久久99久久99精品蜜柚传媒| 中文乱码免费一区二区三区下载| 成人午夜激情av| 久久久久国产精品麻豆ai换脸| 五月天婷婷丁香| 欧美精品一区二区三区在线播放| 18+激情视频在线| 国产一区二区丝袜| 首页国产精品| 色婷婷.com| 中文字幕一区二区三区四区不卡| 最近国语视频在线观看免费播放| 日韩精品在线私人| 午夜伦理福利在线| 精品一区久久久| 亚洲神马久久| 99久久人妻无码中文字幕系列| 亚洲aⅴ怡春院| 天堂网在线中文| 91精品国产99| 亚洲警察之高压线| 国产男女无遮挡| 亚洲国产精品成人综合色在线婷婷| 黄色av网站免费观看| 亚洲丝袜av一区| 91天天综合| 在线丝袜欧美日韩制服| 国产在线国偷精品产拍免费yy | 国产小视频福利在线| 国产成人精品在线| 成人毛片在线| 又色又爽又黄视频| 一区二区成人在线视频| 日韩在线观看视频一区| 欧美在线视频在线播放完整版免费观看 | 欧美一区二区三区精美影视| 免费一级片91| 欧美做爰爽爽爽爽爽爽| 精品88久久久久88久久久| 国产污视频在线播放| 秋霞久久久久久一区二区| 奇米影视一区二区三区| 亚洲伦理一区二区三区| 精品久久久久久久久久久久久久久 | 亚洲黄色录像片| 人妻少妇精品无码专区久久| 91地址最新发布| 日韩av密桃| 激情小说欧美色图| 色综合天天综合网天天狠天天| 成黄免费在线| 超碰国产精品久久国产精品99| 一本不卡影院| 亚洲综合第一区| 日韩一二三四区| 中文不卡1区2区3区| 免费看啪啪网站| 99久久99久久综合| 中文无码av一区二区三区| 美乳少妇欧美精品| 亚洲丝袜啪啪| 日韩欧美中文在线视频| 狠狠躁夜夜躁人人爽超碰91| 在线播放毛片| 激情伦成人综合小说| 久久超碰97中文字幕| 日本三级中文字幕| 日韩最新在线视频| 欧美大胆视频| 中文字幕免费高清在线| 午夜av一区二区| 黄网站在线播放| 欧美日韩免费高清| 国产91精品免费| 亚洲在线精品视频|