拖拽上傳

跟着張大神修煉內功javascript

其中就有拖拽上傳的demophp

https://www.zhangxinxu.com/study/201109/html5-file-image-ajax-upload.htmlhtml

精簡版:html5

https://www.zhangxinxu.com/study/201809/datatransfer-files.phpjava

 

DataTransfer.files

DataTransfer.files,其對應的列表只就是咱們拖進去的文件列表。ajax

DataTransfer.items

DataTransfer.items能夠用來獲取拖拽的數據信息,只讀。spa

DataTransfer.items爲DataTransferItem類型的數據列表集合,而DataTransferItem又包含多個屬性和方法,屬性包括kindtype,方法包括getAsString()getAsFile(),這個和剪切板item對象方法是一致的。code

 

使用模板(一樣能夠用於剪切板對象clipboardData.items)htm

handleDataTransferItems = function (items) {
  for (var i = 0; i < items.length; i += 1) {
    var kind = items[i].kind;
    var type = items[i].type;
    // 邏輯開始
    if (kind == 'string') {
      if (type.indexOf('text/plain') != -1) {
        items[i].getAsString(function (str) {
          // str是純文本,該怎麼處理,就在這裏處理
        });   
      } else if (type.indexOf('text/html') != -1) {
        items[i].getAsString(function (str) {
          // str是富文本,就在這裏處理
        });
      } else if (type.indexOf('text/uri-list') != -1) {
        items[i].getAsString(function (str) {
          // str是uri地址,在這裏進行處理
        });
      }
    } else if (kind == 'file') {
      // 若是是圖片
      if (type.indexOf('image/') != -1) {
        var file = items[i].getAsFile();
        // file就是圖片文件對象,能夠上傳,或者其餘處理
      }
    }
  }
};

圖片的話對象

能夠調用getAsFile()方法將其轉換成二進制文件對象,而後能夠ajax上傳等處理。

使用示例:

document.addEventListener('drop', function (event) {
    var items = event.dataTransfer.items || [];
    handleDataTransferItems(items);
});
相關文章
相關標籤/搜索