精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

岛国精品在线播放| 性欧美高清come| 天使萌一区二区三区免费观看| 日韩精品免费在线观看| 亚洲黄色a v| 在线视频91| 免费看日本黄色片| 亚洲精品成人一区| 亚洲免费观看高清在线观看| 国产精品免费区二区三区观看| 久久久久久少妇| 亚洲手机在线观看| 精品久久久久久久久久久下田 | 欧美第一页在线观看| 爱爱精品视频| 欧美日韩国产高清一区| 免费在线观看视频a| 日本在线免费看| av在线这里只有精品| 国产欧美一区二区| 国产黄色免费观看| 91精品一区二区三区综合| 精品亚洲国产成av人片传媒| 欧美又黄又嫩大片a级| 另类专区亚洲| 亚洲国产日日夜夜| 日本一级淫片演员| av在线免费观看网站| 99久久99久久精品免费看蜜桃| 成人信息集中地欧美| 日日夜夜操视频| 亚洲激情网址| 欧美激情欧美狂野欧美精品 | 理论片中文字幕| 国产在线国偷精品免费看| 国产成人亚洲综合青青| 久久国产精品系列| 亚洲一级黄色| 欧美精品一区二区免费| 美国黄色片视频| 波多野结衣在线播放一区| 亚洲欧美国产一区二区三区| av网页在线观看| 日本一区二区三区播放| 777亚洲妇女| 欧美日韩一二区| 亚洲区成人777777精品| 黄色av网站在线| 99re8在线精品视频免费播放| 99蜜桃在线观看免费视频网站| 亚洲一区二区人妻| 免费在线看一区| 国产精品r级在线| 狠狠人妻久久久久久| 99成人精品| 97精品一区二区三区| 精品少妇一二三区| 欧美日韩三区| 久久久欧美一区二区| 不卡的免费av| 日韩视频一区| 欧美一级大胆视频| 亚洲天堂视频网站| 三级不卡在线观看| 国产精品偷伦视频免费观看国产| 亚洲专区在线播放| 精品亚洲aⅴ乱码一区二区三区| 国产精品专区一| 国产美女永久免费| 成人一区二区三区| 国产在线精品一区二区三区》| 欧美一级淫片aaaaaa| 成人av电影免费在线播放| 精品一区久久久| 国产在线你懂得| 国产精品国产三级国产aⅴ原创| 亚洲三区在线| 中文字幕在线观看播放| 午夜精品久久久久久久久| 色欲av无码一区二区人妻| 日韩中文影院| 在线播放欧美女士性生活| 小日子的在线观看免费第8集| 97品白浆高清久久久久久| 精品福利在线导航| 亚洲精品视频久久久| 色婷婷热久久| 久久99精品视频一区97| 国产高清中文字幕| 麻豆极品一区二区三区| 国产成人av一区二区三区| 深夜影院在线观看| 亚洲国产高清aⅴ视频| 麻豆视频传媒入口| 成人影院网站| 欧美一区二区视频在线观看2020| 中文字幕免费高清视频| 欧美日韩亚洲在线观看| 久久久久久久久综合| 五月婷婷激情五月| 国产精品99久久久久| 日本免费高清不卡| 亚洲资源一区| 色综合久久天天| 国产又黄又嫩又滑又白| 日本一二区不卡| 国产69精品99久久久久久宅男| 国产又粗又猛又爽又| 成人av电影在线网| 在线观看视频黄色| 欧美大电影免费观看| 日韩你懂的在线播放| 日本一道本视频| 日韩一级精品| 91国产丝袜在线放| 成人在线免费观看| 天天综合色天天综合| 成人性生交视频免费观看| 精品理论电影在线| 韩国19禁主播vip福利视频| 国产免费的av| 国产精品系列在线| 久久精品99国产| 久久精品66| 欧美极品少妇xxxxⅹ喷水| 国产乱人乱偷精品视频a人人澡| 久久婷婷综合激情| 人妻av中文系列| 136福利精品导航| 久久中文字幕在线视频| 亚洲天堂手机版| 国产欧美日韩不卡| 无码无遮挡又大又爽又黄的视频| 国产精品xxxav免费视频| 久久亚洲成人精品| 在线观看xxxx| 中文字幕电影一区| 欧美性猛交久久久乱大交小说| 亚洲激情77| 国产69久久精品成人看| 四季av日韩精品一区| 亚洲成人在线观看视频| 亚洲少妇中文字幕| 亚洲午夜黄色| 国产精品国产亚洲精品看不卡15 | 久久久噜久噜久久综合| 不卡的日韩av| 亚洲最新视频在线播放| 四川一级毛毛片| 午夜精品久久| 国产精品18毛片一区二区| sis001亚洲原创区| 亚洲精品短视频| 二区视频在线观看| 久久久国产午夜精品| 男人插女人下面免费视频| 国产一区二区三区日韩精品| 国产成人涩涩涩视频在线观看| 蜜桃免费在线| 欧美日韩视频在线第一区| 国产aaaaaaaaa| 精彩视频一区二区| 青青草视频在线视频| 国偷自产av一区二区三区| 2019中文字幕在线免费观看| 你懂的在线免费观看| 在线观看亚洲成人| 九九热最新地址| 成人免费视频一区| 国产精品动漫网站| 成人亚洲一区| 亚洲影影院av| 蜜桃视频在线观看播放| 中文字幕一区二区三区电影| 91精品在线视频观看| 一二三区精品福利视频| 一级做a爰片毛片| 蜜臀av性久久久久蜜臀av麻豆 | 在线看片成人| 青青草原亚洲| 国产成人免费av一区二区午夜 | 日韩欧美三级在线观看| av高清久久久| 国产一区二区在线免费播放| 911久久香蕉国产线看观看| 成人精品水蜜桃| 欧美亚洲韩国| 欧美成年人视频网站| 午夜福利一区二区三区| 在线影院国内精品| 日本天堂中文字幕| 久久久久久影视| 日韩高清一二三区| 日韩激情中文字幕| 久久这里只有精品8| 狠狠做六月爱婷婷综合aⅴ| 91久久综合亚洲鲁鲁五月天| 蜜桃视频m3u8在线观看| 久久精品电影网站| 五月天婷婷视频| 欧美美女一区二区| 国产美女激情视频| 亚洲综合在线免费观看| 欧洲美熟女乱又伦| 99久久夜色精品国产网站| 国产原创精品在线| 国产毛片久久| 欧美a级免费视频| 手机在线电影一区| 欧美二级三级| 69精品国产久热在线观看| 国产精品美女www爽爽爽视频| 欧美人与牲禽动交com| 中文字幕亚洲综合久久筱田步美| 午夜福利视频一区二区| 精品久久久久久亚洲综合网| 亚洲天堂视频网| 91国产福利在线| 欧美福利视频一区二区| 亚洲一区二区偷拍精品| 精品亚洲乱码一区二区| 国产丝袜欧美中文另类| 丰满大乳奶做爰ⅹxx视频| 国产成人啪免费观看软件| 免费精品99久久国产综合精品应用| 免费日韩av片| 91九色在线观看视频| 伊人影院久久| 日本大胆人体视频| 羞羞答答成人影院www| 视频一区二区精品| 国际精品欧美精品| 欧美12av| 蜜桃精品wwwmitaows| 久久九九视频| 羞羞色国产精品网站| 精品午夜一区二区三区| 国产精品任我爽爆在线播放| 99在线热播| 国产精品久久久久久久久久白浆| 亚洲mm色国产网站| 国产欧美88| 欧美色区777第一页| 欧美日韩成人在线一区| 日本天堂中文字幕| 夜夜精品浪潮av一区二区三区| 欧美色视频一区二区三区在线观看| 国产欧美一区二区精品性色 | 久久久久久国产免费| 调教一区二区| 久久久久久久久久久久久久久久久久av| 91最新在线视频| 欧美国产极速在线| 波多野在线观看| 68精品久久久久久欧美| 中文字幕在线看片| 日产精品久久久一区二区福利| 中文字幕在线视频久| 国产精品96久久久久久| 免费污视频在线一区| 国产日韩精品电影| 日韩欧美另类中文字幕| 国产精品一区二区三区免费观看 | 日韩精品视频观看| 青青视频在线观| 一区二区三区视频免费| 黄色免费网站在线观看| 欧美国产日韩一区二区三区| 国产一二在线播放| 国产a∨精品一区二区三区不卡| 色综合天天色| 99免费在线观看视频| 亚洲97av| 三级网在线观看| 99热免费精品| 污视频免费在线观看网站| 韩国精品在线观看| 精品国产人妻一区二区三区| 国产色产综合色产在线视频| 日本裸体美女视频| 亚洲一区二区三区在线播放| chinese国产精品| 91精品国产综合久久久久| 日日躁夜夜躁白天躁晚上躁91| 亚洲免费视频观看| 黄色免费网站在线观看| 91精品国产成人www| 日本免费在线一区| 国产日韩一区二区| 日本欧美视频| 国产69精品久久久久999小说| 蜜臀精品久久久久久蜜臀| 免费看黄色片的网站| 国产农村妇女毛片精品久久麻豆 | 久热国产精品| 师生出轨h灌满了1v1| 亚洲国产精品成人综合| 日本天堂网在线观看| 欧美日韩免费观看一区三区| 你懂的网站在线| 久久精品成人欧美大片古装| 原纱央莉成人av片| 91丨九色丨国产| 欧美少妇xxxx| 日韩av综合在线观看| 国产一区二区毛片| 在线观看国产精品一区| 亚洲国产日韩一区二区| 亚洲专区在线播放| 亚洲欧美一区二区激情| 久久不射影院| 成人欧美在线视频| 精品视频国产| 亚洲熟女乱色一区二区三区| 国产激情一区二区三区桃花岛亚洲| 无码国产69精品久久久久同性| 亚洲一区二区精品视频| 91亚洲国产成人精品一区| 国产性猛交xxxx免费看久久| 春色校园综合激情亚洲| av一本久道久久波多野结衣| 久久亚洲专区| 国产精品自拍视频在线| 国产网站一区二区三区| 欧美一区二区激情视频| 亚洲精品一区二区三区99| 最近中文字幕免费mv2018在线| 成人激情在线播放| 成人写真视频| 9久久婷婷国产综合精品性色| 26uuu国产日韩综合| 日本熟妇一区二区| 亚洲国产精品久久| eeuss鲁一区二区三区| 成人自拍网站| 欧美日韩99| 精品人妻在线视频| 亚洲一区二区三区影院| 高h震动喷水双性1v1| 欧美激情视频三区| 久草精品视频| 99热自拍偷拍| 国产亚洲精品中文字幕| 亚洲成人av网址| 在线观看精品国产视频| 免费观看成人性生生活片 | 久久精品国产精品青草色艺| 激情综合在线| 中文字幕在线永久| 欧美日韩视频在线| 免费国产在线视频| 国产精品久久久久久久7电影 | 青青草视频国产| 国产成a人亚洲精| 亚洲一区二区91| 日韩av中文字幕在线播放| 日韩激情电影| 日韩尤物视频| 国内不卡的二区三区中文字幕| 国产乱子轮xxx农村| 欧美一区二区三区四区高清| 欧美wwww| 欧美极品jizzhd欧美| 视频一区在线播放| 精品一区二区在线观看视频| 欧美一区二区在线播放| 1区2区3区在线| 日韩理论片在线观看| 韩国欧美一区二区| 精品少妇一二三区| 亚洲最新中文字幕| crdy在线观看欧美| 黄页免费在线观看视频| 日本一区二区免费在线| 国产伦精品一区二区三区视频痴汉| 欧美国产日韩中文字幕在线| 性欧美xxxx免费岛国不卡电影| 一级黄色特级片| 亚洲成av人片| 中文字幕在线免费| 成人综合电影| 秋霞影院一区二区| 国产一级一片免费播放放a| 亚洲欧美在线看| 日韩三级久久| 热久久精品免费视频| 亚洲老妇xxxxxx| 免费看男男www网站入口在线| 444亚洲人体| 久久一区视频| 免费在线一级片| 中文字幕日韩电影| 女同另类激情重口| 一级做a爱视频| 一本色道久久综合狠狠躁的推荐| 国产丝袜在线| 日韩精品一区二区三区丰满 | av永久免费观看| 精品久久久久久亚洲综合网 | 丝袜亚洲另类欧美综合|