2017-01-03 7 views
1

単純なドラッグアンドドロップファイル入力を実装しています。私はドロップ領域の上に「ホバリング」されている間にファイル(画像)をプレビューしたいと思います。ただし、getAsFileメソッドはファイルに対してnullを返し続けます。ここに私のコードだ:ファイルのnullを返すDataTransferItemのgetAsFileメソッド

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'); 
}); 

そして、私はその上に単一の.pngを置くと、それが記録されます:

main.js:52 DataTransferItem {kind: "file", type: "image/png"} 
main.js:60 null 

私が何か間違ったことか、これはバグであるだろうか? Chromeでのテスト55.

答えて

3

私は答えを見つけました。

dragenterイベントは、実際のファイルにアクセスできません。どのファイルがドラッグされているかを検出できますが、そのファイルにはアクセスできません。このため、DataTransfer.itemsオブジェクトが設定されていても、DataTransfer.filesオブジェクトはなく、getAsItemメソッドはDataTransfer.itemsアイテムでは使用できません。

私がしたかったこと(ドラッグされたファイルをプレビューすること)はまったくできません。

関連する問題