DataTransfer.files 屬性

admin發表於2019-10-09

DataTransfer.files屬性可以返回從作業系統向瀏覽器拖拽的檔案列表。

如果拖拽操作不涉及檔案,那麼此屬性返回值為空列表。

語法結構:

[JavaScript] 純文字檢視 複製程式碼
dataTransfer.files

此屬性的返回值是型別為FileList(檔案列表)。

關於FileList型別更多內容可以參閱JavaScript FileList 集合一章節。

程式碼例項如下:

[HTML] 純文字檢視 複製程式碼執行程式碼
<!DOCTYPE html>
<html lang="zh-cn">
<head>
<meta charset=" utf-8">
<meta name="author" content="http://www.softwhy.com/" />
<title>螞蟻部落</title>
<style type="text/css">
#demo {
  margin: 20px;
}
#demo .preview {
  height: 300px;
  width:300px;
  background: #ddd;
}
#demo li {
  list-style:none;
}
#demo img {
  max-height: 150px;
  width: auto;
}
</style>
<script>
window.onload = () => {
  let preview = document.querySelector('.preview');
 
  preview.addEventListener('dragover', function (e) {
    e.preventDefault();
  }, false);
 
  preview.addEventListener('drop', function (e) {
    e.preventDefault();
    e.stopPropagation();

    console.log(e.dataTransfer.files);
    
    [].forEach.call(e.dataTransfer.files, function (file) {
      if (file && file.type.match('image.*')) {
        let reader = new FileReader();
        reader.onload = function (e) {
          var img = document.createElement('img');
          img.src = e.target.result;
          var li = document.createElement('li');
          li.appendChild(img);
          preview.appendChild(li);
        };
        reader.readAsDataURL(file);
      }
    });
  }, false);
}
</script>
</head>
<body>
  <div id="demo">
    <h3>拖拽圖片進入下面區域預覽</h3>
    <ul class="preview"></ul>
  </div>
</body>
</html>

現在向灰色區域拖入兩張圖片,程式碼執行效果截圖如下:

a:3:{s:3:\"pic\";s:43:\"portal/201910/09/220709v5r82ifort8cqqlt.png\";s:5:\"thumb\";s:0:\"\";s:6:\"remote\";N;}

面看控制檯列印資訊如下:

a:3:{s:3:\"pic\";s:43:\"portal/201910/09/220726vzjwmu6cx9rjaoux.png\";s:5:\"thumb\";s:0:\"\";s:6:\"remote\";N;}

可以看到返回值是一個集合,裡面有兩個圖片檔案。

還有更多的資訊,為了節省空間,僅擷取了一部分資訊。