Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/367.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 数据传输项';s getAsFile方法为文件返回null_Javascript - Fatal编程技术网

Javascript 数据传输项';s getAsFile方法为文件返回null

Javascript 数据传输项';s getAsFile方法为文件返回null,javascript,Javascript,我正在实现一个简单的拖放文件输入。我想在文件(图像)被“悬停”在放置区域时预览它们。但是,对于文件,getAsFile方法不断返回null。这是我的密码: dropzone.addEventListener("dragenter", event => { event.preventDefault(); // make sure these are actually images if(!isImages(event)){ return; }

我正在实现一个简单的拖放文件输入。我想在文件(图像)被“悬停”在放置区域时预览它们。但是,对于文件,
getAsFile
方法不断返回
null
。这是我的密码:

dropzone.addEventListener("dragenter", event => {
    event.preventDefault();

    // make sure these are actually images

    if(!isImages(event)){
      return;
    }

    // preparing the preview area

    let target = dropzone_overlay_images;
    target.innerHTML = '';

    for(let i = 0; i < event.dataTransfer.items.length; i++){

      // assign current item to a variable to make working with it easier

      let item = event.dataTransfer.items[i];
      let img = document.createElement('img');

      // for debug: logging the current item

      console.log(item);

      // get it as file

      let file = item.getAsFile();

      // and log the file

      console.log(file);
    }
    dropzone_overlay.classList.toggle('show');
});

我是做错了什么还是这是一个错误?在Chrome 55上测试。

aa我找到了答案

dragenter
事件无权访问实际文件。它可以检测哪些文件正在被拖动,但无法访问它们的内容。这就是为什么即使填充了
DataTransfer.items
对象,也没有填充
DataTransfer.files
对象,并且
getAsItem
方法不能用于
DataTransfer.items


因此,我想做的(预览拖动的文件)根本不可能。

这里应该添加:根据dragenter事件上的[(6.8.2拖动数据存储区),
拖动数据存储区模式处于
保护模式
。根据[(6.8.3.2 DataTransferItem接口)getAsFile()当
拖动数据存储模式
不处于
读/写模式
只读模式
时,必须返回null。下面是一个包含所有拖放事件和相关模式的表:(在这种情况下没有多大帮助,但很高兴知道,imo)
main.js:52 DataTransferItem {kind: "file", type: "image/png"}
main.js:60 null