2012-03-03 5 views
54

jQueryのdropイベントをデスクトップからファイルをドラッグするのに使用できますか?jQueryのドロップイベントを使用して、デスクトップからドラッグしたファイルをアップロードする方法はありますか?

もしそうなら、削除されたファイルデータを取得するにはどうすればよいですか?

+1

の可能重複[jQueryを使ってHTML5のファイルAPIの例?](http://stackoverflow.com/questions/4722500/html5s-file-api-example-with-jquery) –

答えて

114

少し面倒です(少なくとも3つのイベントを処理する必要がありますが)。

まず、あなたはdragoverdragenterのためのEventHandlerを追加し、そのようなこれらのイベントのデフォルトのアクションを阻止する必要があります。

$('#div').on(
    'dragover', 
    function(e) { 
     e.preventDefault(); 
     e.stopPropagation(); 
    } 
) 
$('#div').on(
    'dragenter', 
    function(e) { 
     e.preventDefault(); 
     e.stopPropagation(); 
    } 
) 

次にドロップハンドラを追加し、e.originalEvent.dataTransfer.filesでドロップされたファイルにアクセスすることができます。

$('#div').on(
    'drop', 
    function(e){ 
     if(e.originalEvent.dataTransfer){ 
      if(e.originalEvent.dataTransfer.files.length) { 
       e.preventDefault(); 
       e.stopPropagation(); 
       /*UPLOAD FILES HERE*/ 
       upload(e.originalEvent.dataTransfer.files); 
      } 
     } 
    } 
); 

これで、divのデスクトップ/エクスプローラ/ファインダーからファイルをドラッグしてアクセスできるようになりました。あなたが必要な理由

http://jsfiddle.net/fSA4N/5/

+7

デフォルトのdragoverとdragenterの動作を抑制するには? –

+2

ブラウザにファイルをドラッグすると、奇妙なことが起こるブラウザがあります。それは本当に必要ではありません。これらのイベントでは、ファイルを削除する必要があるdivを強調表示するなどの素晴らしい機能を追加することもできます。 – Alex

+0

何とかe.originalEvent.dataTransfer.filesを使用してファイル入力に設定できますか? – loostro

関連する問題