15

前提: file:// にアクセスできるローカルの HTML/Javascript Web ページ

ドラッグ可能な HTML 要素のドラッグ開始時に、イベント ハンドラー関数dragStart(e)で File オブジェクトを追加して、ファイルとして認識され、dataTransfer.filesリストに表示されるようにするにはどうすればよいですか?

元:

function dragStart(e){
    var file = getSomeFileObjFromSomewhere();
    e.originalEvent.dataTransfer.effectAllowed = "all";
    e.originalEvent.dataTransfer.setData("file", file);

    console.log("\nFiles:");
    i = 0;
    var files = e.originalEvent.dataTransfer.files,
    len = files.length;
    for (; i < len; i++) {
        console.log("\nIndex: " + i + "\nFilename: " + files[i].name);
        console.log("Type: " + files[i].type);
        console.log("Size: " + files[i].size + " bytes");
        console.dir(files[i]);
    }
}

具体的には、Chrome/Chromium で動作する必要があります。また、ファイルがローカル ドライブに存在すると想定できます。基本的に、ファイルが Windows エクスプローラーからドロップ可能な要素の HTML ページにドラッグされたときに、同じデータを利用できるようにしたいと考えています。

これがChromeに存在することを知っています:

e.originalEvent.dataTransfer.setData("DownloadURL", fileType + ":" + name + ":" + filePath);

ファイルをダウンロードします。しかし、これは私が望むものではありません。これは既存のファイルであり、元のファイルにアクセスする必要があると想定したいからです。

4

2 に答える 2