搜尋
首頁web前端js教程HTML5文件拖動,刪除,分析,讀取和上傳

態這是一個忙碌的一周。我們已經發現了新的HTML5 API如何幫助我們打開,閱讀和上傳用戶將這些文件拖動並掉入瀏覽器窗口中。本文總結了瀏覽器支持的技術和當前水平。

鑰匙要點

  • > HTML5 API可以幫助打開,讀取和上傳用戶已將其拖動到瀏覽器窗口中的文件。此功能由Chrome,Firefox和Opera的最新版本支持,但Opera只能通過標准文件輸入來使用它。
  • > HTML5 FILELIST對像是類似數組的文件對象集合,FileReader對象允許您在JavaScript中打開文本或二進製文件。這使得在進行進一步處理或上傳之前,可以檢查文件類型和大小。
  • >
  • > HTML5允許通過將“進度”事件連接到XMLHTTPREQUEST2對象來創建上傳進度條。此功能加上拖放文件的能力,可以顯著增強Web應用程序的可用性。
  • HTML5 API支持
您的JavaScript代碼應在附加事件處理程序之前檢查文件,filelist和fileReader對象的存在。在撰寫本文時,這些由Chrome,Firefox和Opera的最新版本支持:

儘管Opera支持這些對象,但它們只能通過標准文件輸入來使用 - 而不是拖放。因此,需要進一步檢查;我建議使用xmlhttprequest2上傳方法,例如

if (window.File && window.FileList && window.FileReader) { ... }
>文件拖動
var xhr = new XMLHttpRequest();
if (xhr.upload) {
	... attach drag and drop events ...
}
所有瀏覽器(iPhone和iPad上的瀏覽器除外)支持顯示熟悉的“瀏覽”按鈕的文件輸入類型。 HTML5中引入了“多個”屬性,我們可以將更改事件處理程序附加到該字段:

Chrome和Firefox還允許用戶將一個或多個文件拖動到所選元素上。您可以將事件處理程序連接在內,包括“ Dragover”和“ DragLeave”(用於更改樣式)和“ Drop”,以檢測掉落的文件,例如

document.getElementById("fileselect").addEventListener("change", FileSelectHandler, false);
檢索filelist對象
document.getElementById("filedrag").addEventListener("drop", FileSelectHandler, false);
HTML5 Filelist對像是類似數組的文件對象集合。文件輸入字段通過文件屬性(event.target.files)返回filelist。丟棄的文件通過事件的dataTransfer.files屬性(event.datatransfer.files)返回filelist對象。 因此,我們可以使用單個事件處理程序檢索filelist對象:

取消默認事件很重要。這樣可以防止瀏覽器掉入窗口時試圖顯示或處理文件的嘗試。

>分析文件對象
// cancel event default
e.preventDefault();

// fetch FileList object
var files = e.target.files || e.dataTransfer.files;

// process all File objects
for (var i = 0, file; file = files[i]; i++) {
	...
}
filelist集合包含許多文件對象。提供了三個有用的文件屬性:

.name:文件名(不包括路徑信息)
    >
  1. .. type:啞劇類型,例如圖像/jpeg,文本/普通等。
  2. .size:字節中的文件大小。
在進行進一步處理或上傳之前,可以檢查文件類型和大小,例如
if (window.File && window.FileList && window.FileReader) { ... }
有關更多信息,請參閱如何使用HTML5和JavaScript打開刪除文件。

>使用fileReader

打開文件 HTML5 FileReader對象允許您在JavaScript中打開文本或二進製文件。正如您所期望的那樣,readastext()方法用於檢索文本內容,例如
var xhr = new XMLHttpRequest();
if (xhr.upload) {
	... attach drag and drop events ...
}
同樣,ReadAsdataurl()方法將二進製圖像數據作為編碼數據URL檢索,可以將其傳遞到Image SRC屬性或畫布元素:
document.getElementById("fileselect").addEventListener("change", FileSelectHandler, false);
有關更多信息,請參閱如何使用HTML5和JavaScript打開刪除文件。

>使用ajax

上傳文件 當用戶保留在頁面上時,可以將適當的文件上傳到您的服務器。這只是將文件對像傳遞到xmlhttprequest2的send()方法的問題:
document.getElementById("filedrag").addEventListener("drop", FileSelectHandler, false);
注意,我們還將文件名發送為HTTP標頭。這是可選的,但是它允許我們使用諸如PHP之類的語言在服務器上使用其原始名稱重新創建文件:
// cancel event default
e.preventDefault();

// fetch FileList object
var files = e.target.files || e.dataTransfer.files;

// process all File objects
for (var i = 0, file; file = files[i]; i++) {
	...
}
有關更多信息,請參閱如何使用HTML5和AJAX異步上傳文件。

創建上傳進度欄

我們還可以將“進度”事件附加到xmlhttprequest2對象:
// process image files under 300,000 bytes
if (file.type.indexOf("image") == 0 && file.size 

該處理程序接收一個帶有.LOAD(傳輸的字節的數量)和.Total(文件大小)屬性的事件對象。因此,可以計算進度並將其傳遞給HTML5進度標籤或任何其他元素,例如

<pre class="brush:php;toolbar:false">
if (file.type.indexOf("text") == 0) {
    var reader = new FileReader();
    reader.onload = function(e) {
		// get file content
		var text = e.target.result;
		...
    }
    reader.readAsText(file);
}
有關更多信息,請參閱如何在HTML5和JavaScript中創建圖形文件上傳進度條。 希望您喜歡這個系列。文件拖放是一個重要的功能,可以轉換Web應用程序的可用性。 HTML5終於變得容易了。

>關於HTML5文件拖動,刪除,讀取,分析和上傳進度條

的常見問題(常見問題解答)

>如何在我的Web應用程序中實現HTML5拖放功能?

>實現HTML5拖放功能涉及幾個步驟。首先,您需要創建一個Drop區域,該區域是用戶可以刪除文件的區域。這可以是任何HTML元素,但必須將“可拖動”屬性設置為true。接下來,您需要為“拖動”和“丟棄”事件添加事件聽眾。當拖動物品在下降區域上方時,“拖曳”事件將發射,並且在刪除該項目時發射“下降”事件。如果“ drop”事件的處理程序,您可以通過事件對象的“ datatrans.files”屬性訪問刪除的文件。

>“ dataTransfer.files”和“ dataTranser.Items”?

>“ dataTransfer.files”和“ datatRansfer.items”之間有什麼區別。 “ dataTransfer.files”屬性是代表要拖動的文件的filelist對象。當您要處理服務器端上的文件時,這很有用。另一方面,“ dataTransfer.items”是代表所有阻力數據的DatatRansferitemlist對象。當您要處理不同類型的拖放數據時,這很有用,而不僅僅是文件。

為什麼我的“ dataTransfer.files”在射擊“ drop”事件時空為空?

是空的。 “ DataTransfer.files”屬性僅在“ Drop”事件中填充。確保您是在正確的事件處理程序中訪問它的。

>如何讀取已刪除文件的內容?

您可以使用FileReader API讀取丟棄文件的內容。首先,您需要創建一個新的FileReader對象。然後,您可以使用“ readastext”或“ readasdataurl”方法讀取文件內容。 “ readastext”方法將文件讀取為文本字符串,而“ readasdataurl”方法將文件讀取為數據URL。

在上傳文件時如何顯示進度欄?

>

您可以通過聆聽XMLHTTPEREQUEST PEREQUEST PREQUEST PREQUEST的“進度”事件來顯示進度欄。隨著上載的進行,“進度”事件會定期發射。如果情況處理程序,您可以計算進度百分比並相應地更新進度欄。確保將XMLHTTPREQUEST對象的“上載”屬性設置為真實,以啟用“進度”事件。

>

>我如何處理多個文件上傳?

>您可以通過在“ dataTransfer.files.files”屬性上迭代來處理多個文件上傳,哪些是文件。 filelist對像中的每個項目都是代表掉落文件的文件對象。您可以單獨處理每個文件,例如,通過讀取其內容或將其上傳到服務器。

>

>如何限制可以刪除的文件類型?

>您可以限制可以通過檢查“ datatransfer.files.files.files.files.files”屬性的“類型”屬性的文件類型的文件類型。 “類型”屬性是代表文件的MIME類型的字符串。如果不允許使用文件類型,則可以通過調用“ drop”事件處理程序中事件對象的“預防默認”方法來防止刪除操作。

>我如何處理嵌套元素的拖放事件?

>處理嵌套元素的拖放事件可能很棘手,因為事件在DOM樹上冒泡。為了防止父母元素收到針對子元素的拖放事件,您可以在子元素的事件處理程序中調用事件對象的“停止propagation”方法。

>

>我如何自定義文件在上面拖動文件時的外觀? “ Dragleave”和“ Drop”活動處理程序。您可以在CSS中定義類的外觀。

>如何測試自動化測試中的拖放功能?

測試拖放功能可能具有挑戰性,因為它涉及復雜的用戶交互。但是,某些測試庫(例如硒)提供了模擬阻力動作的方法。您還可以創建一個模擬的“ Drop”事件並將其派遣到Drop Zone Element。

以上是HTML5文件拖動,刪除,分析,讀取和上傳的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
JavaScript是用C編寫的嗎?檢查證據JavaScript是用C編寫的嗎?檢查證據Apr 25, 2025 am 12:15 AM

是的,JavaScript的引擎核心是用C語言編寫的。 1)C語言提供了高效性能和底層控制,適合JavaScript引擎的開發。 2)以V8引擎為例,其核心用C 編寫,結合了C的效率和麵向對象特性。 3)JavaScript引擎的工作原理包括解析、編譯和執行,C語言在這些過程中發揮關鍵作用。

JavaScript的角色:使網絡交互和動態JavaScript的角色:使網絡交互和動態Apr 24, 2025 am 12:12 AM

JavaScript是現代網站的核心,因為它增強了網頁的交互性和動態性。 1)它允許在不刷新頁面的情況下改變內容,2)通過DOMAPI操作網頁,3)支持複雜的交互效果如動畫和拖放,4)優化性能和最佳實踐提高用戶體驗。

C和JavaScript:連接解釋C和JavaScript:連接解釋Apr 23, 2025 am 12:07 AM

C 和JavaScript通過WebAssembly實現互操作性。 1)C 代碼編譯成WebAssembly模塊,引入到JavaScript環境中,增強計算能力。 2)在遊戲開發中,C 處理物理引擎和圖形渲染,JavaScript負責遊戲邏輯和用戶界面。

從網站到應用程序:JavaScript的不同應用從網站到應用程序:JavaScript的不同應用Apr 22, 2025 am 12:02 AM

JavaScript在網站、移動應用、桌面應用和服務器端編程中均有廣泛應用。 1)在網站開發中,JavaScript與HTML、CSS一起操作DOM,實現動態效果,並支持如jQuery、React等框架。 2)通過ReactNative和Ionic,JavaScript用於開發跨平台移動應用。 3)Electron框架使JavaScript能構建桌面應用。 4)Node.js讓JavaScript在服務器端運行,支持高並發請求。

Python vs. JavaScript:比較用例和應用程序Python vs. JavaScript:比較用例和應用程序Apr 21, 2025 am 12:01 AM

Python更適合數據科學和自動化,JavaScript更適合前端和全棧開發。 1.Python在數據科學和機器學習中表現出色,使用NumPy、Pandas等庫進行數據處理和建模。 2.Python在自動化和腳本編寫方面簡潔高效。 3.JavaScript在前端開發中不可或缺,用於構建動態網頁和單頁面應用。 4.JavaScript通過Node.js在後端開發中發揮作用,支持全棧開發。

C/C在JavaScript口譯員和編譯器中的作用C/C在JavaScript口譯員和編譯器中的作用Apr 20, 2025 am 12:01 AM

C和C 在JavaScript引擎中扮演了至关重要的角色,主要用于实现解释器和JIT编译器。1)C 用于解析JavaScript源码并生成抽象语法树。2)C 负责生成和执行字节码。3)C 实现JIT编译器,在运行时优化和编译热点代码,显著提高JavaScript的执行效率。

JavaScript在行動中:現實世界中的示例和項目JavaScript在行動中:現實世界中的示例和項目Apr 19, 2025 am 12:13 AM

JavaScript在現實世界中的應用包括前端和後端開發。 1)通過構建TODO列表應用展示前端應用,涉及DOM操作和事件處理。 2)通過Node.js和Express構建RESTfulAPI展示後端應用。

JavaScript和Web:核心功能和用例JavaScript和Web:核心功能和用例Apr 18, 2025 am 12:19 AM

JavaScript在Web開發中的主要用途包括客戶端交互、表單驗證和異步通信。 1)通過DOM操作實現動態內容更新和用戶交互;2)在用戶提交數據前進行客戶端驗證,提高用戶體驗;3)通過AJAX技術實現與服務器的無刷新通信。

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

mPDF

mPDF

mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

將Eclipse與SAP NetWeaver應用伺服器整合。

SublimeText3 Linux新版

SublimeText3 Linux新版

SublimeText3 Linux最新版

EditPlus 中文破解版

EditPlus 中文破解版

體積小,語法高亮,不支援程式碼提示功能