拖拽上传

跟着张大神修炼内功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);
});
相关文章
相关标签/搜索