態這是一個忙碌的一周。我們已經發現了新的HTML5 API如何幫助我們打開,閱讀和上傳用戶將這些文件拖動並掉入瀏覽器窗口中。本文總結了瀏覽器支持的技術和當前水平。
if (window.File && window.FileList && window.FileReader) { ... }>文件拖動
var xhr = new XMLHttpRequest(); if (xhr.upload) { ... attach drag and drop events ... }所有瀏覽器(iPhone和iPad上的瀏覽器除外)支持顯示熟悉的“瀏覽”按鈕的文件輸入類型。 HTML5中引入了“多個”屬性,我們可以將更改事件處理程序附加到該字段:
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集合包含許多文件對象。提供了三個有用的文件屬性:
if (window.File && window.FileList && window.FileReader) { ... }有關更多信息,請參閱如何使用HTML5和JavaScript打開刪除文件。
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打開刪除文件。
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異步上傳文件。
// process image files under 300,000 bytes if (file.type.indexOf("image") == 0 && file.size < 300000) { ... }該處理程序接收一個帶有.LOAD(傳輸的字節的數量)和.Total(文件大小)屬性的事件對象。因此,可以計算進度並將其傳遞給HTML5進度標籤或任何其他元素,例如
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拖放功能涉及幾個步驟。首先,您需要創建一個Drop區域,該區域是用戶可以刪除文件的區域。這可以是任何HTML元素,但必須將“可拖動”屬性設置為true。接下來,您需要為“拖動”和“丟棄”事件添加事件聽眾。當拖動物品在下降區域上方時,“拖曳”事件將發射,並且在刪除該項目時發射“下降”事件。如果“ drop”事件的處理程序,您可以通過事件對象的“ datatrans.files”屬性訪問刪除的文件。
>“ dataTransfer.files”和“ datatRansfer.items”之間有什麼區別。 “ dataTransfer.files”屬性是代表要拖動的文件的filelist對象。當您要處理服務器端上的文件時,這很有用。另一方面,“ dataTransfer.items”是代表所有阻力數據的DatatRansferitemlist對象。當您要處理不同類型的拖放數據時,這很有用,而不僅僅是文件。
是空的。 “ DataTransfer.files”屬性僅在“ Drop”事件中填充。確保您是在正確的事件處理程序中訪問它的。
您可以使用FileReader API讀取丟棄文件的內容。首先,您需要創建一個新的FileReader對象。然後,您可以使用“ readastext”或“ readasdataurl”方法讀取文件內容。 “ readastext”方法將文件讀取為文本字符串,而“ readasdataurl”方法將文件讀取為數據URL。
>
>我如何處理多個文件上傳?
>
>我如何自定義文件在上面拖動文件時的外觀? “ Dragleave”和“ Drop”活動處理程序。您可以在CSS中定義類的外觀。 >如何測試自動化測試中的拖放功能?測試拖放功能可能具有挑戰性,因為它涉及復雜的用戶交互。但是,某些測試庫(例如硒)提供了模擬阻力動作的方法。您還可以創建一個模擬的“ Drop”事件並將其派遣到Drop Zone Element。
以上是HTML5文件拖動,刪除,分析,讀取和上傳的詳細內容。更多資訊請關注PHP中文網其他相關文章!