2017-07-17 9 views
0

ファイルをドロップし、それらのファイルの情報にアクセスし、javascript、html5:e.dataTransfer.itemsとe.dataTransfer.filesの比較、ファイルサイズを取得する方法

let files= e.dataTransfer.files; 

でファイルサイズ(https://developer.mozilla.org/en-US/docs/Web/API/File)をチェックすることができます。しかし、あなたは(私の知る限り読むことができるようおよび代替)以降を使用している場合

let items = e.dataTransfer.items; 

次に、ファイルサイズ(https://developer.mozilla.org/en-US/docs/Web/API/DataTransfer/items)にアクセスする方法はありません。

削除されたファイルのサイズを知る正しい方法はどれですか?

回答:ディレクトリを読み込むとき.getAsFileでファイルにアクセスすることによって()

しかし、どのようにそれを行いますか?コメントで提供さ答えからコード

let items = e.dataTransfer.items; 
for (let i=0; i < items.length; i++) { 
    let item = items[i].webkitGetAsEntry(); 
    if (item && item.isFile) 
     console.log(items[i].getAsFile()); // HERE IT WORKS 
    else if (item && item.isDirectory) { 
     item.createReader().readEntries(function(entries) { 
      for (let j=0; j<entries.length; j++) 
       see_file(entries[j].getAsFile()); // HERE IT DOES NOT WORK 
     }); 
    } 
} 
+0

をそれを見つけることができますが、あなたの質問への答え_ _です含まれていない「ドロップされたファイルのサイズを知るための正しい方法でしょうか?」質問自体_ "ファイルを削除し、そのファイルの情報にアクセスするときに、 のファイルをlet = e.dataTransfer.files; とすると、ファイルのサイズが" _? 'event.dataTransfer.files'を使用する際に何が問題になりますか? – guest271314

+0

私が読んだところでは、.filesは.items(?)のために廃止されているようです。 – Gerard

+0

'.files'が非推奨となっている場所へのリンクを提供できますか? – guest271314

答えて

0

を参照してください、私たちは次のようしている:

ドロップアイテムはディレクトリ、ライン

item.createReader().readEntries(function(entries) { 

ある場合はentriesの配列を生成しますそれ自体はitem.webkitGetAsEntry()インスタンスです。

は、1のため、正常にこの

for (let j=0; j<entries.length; j++) { 
    entries[j].file(function(file) { 
    console.log(file.webkitGetAsEntry()); 
    console.log(file.getAsFile()); 
    }); 
} 

とを行うことができます言及した上記の答えのコードから

for (let j=0; j<entries.length; j++) { 
    let parent = entries[j].parent; 
    console.log(parent.webkitGetAsEntry()); 
    console.log(parent.getAsFile()); 
    //console.log(entries[j].getAsFile()) -> this fails 
} 

のようなもの。しかし、「親」にアクセスする方法はありません「親」ノードへのアクセス。しかし、私はこれについての文書を見つけることができませんでしたが、何が欠けていますか?

EDIT:あなたがここに(コメントで見られる) https://wicg.github.io/entries-api/#api-fileentry

+0

あなたの答えの中で質問するのではなく、別の具体的な質問をすることを検討するのでしょうか?親 "ノード"はどういう意味ですか?実際に何を達成しようとしていますか? – guest271314

+0

「親」ノードとは、ここで説明する親ノードを意味します。https://developer.mozilla.org/en-US/docs/Web/API/Node/parentNode私が達成しようとしているのは、getAsFile()関数にアクセスすることです。 – Gerard

+0

'File'インスタンスと' Directory'インスタンスはノードではありません。あなたは、 'if(entry.isFile)の' Directory'インスタンスにアクセスできます。 entry.file( listFile(file、entry.fullPath).then(解決) ) } else if .isDirectory){ varリーダー= entry.createReader(); } 'at Answer at linked質問 – guest271314

関連する問題