4

ドラッグ アンド ドロップでフォルダ全体をアップロードすることは許可されていません。問題は、誰かがそれをやろうとしているかどうかをどうやって知ることができるかということです. フォルダーをブラウザーにドラッグすると、「.sh」など、webkit が知らない拡張子を持つファイルをドラッグした場合とまったく同じように動作します。どうやって違いを見分けることができますか?

Mac OS X と Windows の Chrome と Safari と Firefox でこれをテストしました。ブラウザと OS によって、結果が若干異なります。ゼロバイトのファイルのアップロードに成功する場合があります。フォルダの写真をアップロードすることもあります。アップロードに失敗することもあります。

event.dataTransfer.types と event.dataTransfer.items はどちらも嘘をつき、タイプがそれぞれ「ファイル」または「ファイル」であると言います。

Firefox は、次のタイプのリストを提供します。

{"0":"application/x-moz-file","1":"text/x-moz-url","2":"text/plain","3":"Files"}
4

3 に答える 3

1

私はそれをする方法を見つけました。この情報は、getAsEntryを介してdataTransfer.itemsにありますが、ブラウザーによって少し異なります。また、同じ名前の2つのファイルを同時にアップロードしないと仮定すると、ファイル名に基づいて把握できますが、これには目的のファイルへのポインターがありません。ここで作業することはあまりないので、これが私にできる最善の方法です。

just_the_files = (dataTransfer) ->
    real_files_set = {}
    for item in dataTransfer.items
        entry = item.getAsEntry?() or item.webkitGetAsEntry?() or item
        if entry.isFile
            real_files_set[entry.name] = true
     (file for file in dataTransfer.files when file.name of real_files_set)
于 2012-09-27T01:17:25.033 に答える
-1

FF には dataTransfer のメソッドがあります: mozGetDataAt (type, index) です。タイプ 'text/x-moz-url' を使用すると、'files:///D:/abc/fileName' のようなファイルのパスが返されます。そして、「files:///D:/abc/folder1/」のように、フォルダー/ディレクティブのパスの末尾に「/」があるのはおかしいです。この状況でうまくいくのだろうか?

于 2015-08-31T08:38:14.460 に答える
-2

実際にフォルダをブラウザにドラッグすると、ドラッグしたフォルダ内のすべてのフォルダとファイルが表示されます。

たとえばクロムで

「D:\my documents\Downloads\ のインデックス」と、ファイルの名前、サイズ、変更日が表示されます...

于 2012-09-27T00:11:22.523 に答える