È possibile utilizzare l'evento drop
di jQuery per il trascinamento di file dal desktop?Come utilizzare l'evento di rilascio di jQuery per caricare file trascinati dal desktop?
In caso affermativo, come ottengo i dati del file rilasciato?
È possibile utilizzare l'evento drop
di jQuery per il trascinamento di file dal desktop?Come utilizzare l'evento di rilascio di jQuery per caricare file trascinati dal desktop?
In caso affermativo, come ottengo i dati del file rilasciato?
È un po 'disordinato (è necessario gestire almeno 3 eventi) ma possibile.
In primo luogo, è necessario aggiungere eventhandlers per dragover
e dragenter
e prevenire le azioni predefinite per questi eventi del genere:
$('#div').on(
'dragover',
function(e) {
e.preventDefault();
e.stopPropagation();
}
)
$('#div').on(
'dragenter',
function(e) {
e.preventDefault();
e.stopPropagation();
}
)
Quindi è possibile aggiungere il drop-conduttore e accedere ai file rilasciati con 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);
}
}
}
);
Ora è possibile trascinare i file dal desktop/explorer/finder nel div e accedervi.
Perché avete bisogno sopprimere il comportamento predefinito di dragover e dragenter? –
Alcuni browser fanno alcune cose strane quando si avvia il trascinamento di un file nel browser. Non è davvero necessario. Con questi eventi, potresti anche aggiungere alcune funzioni interessanti come evidenziare il div in cui devi rilasciare il file. – Alex
è possibile utilizzare in qualche modo e.originalEvent.dataTransfer.files e impostarlo sull'input del file? – loostro
possibile duplicato del [di HTML5 esempio file di API con jquery?] (Http://stackoverflow.com/questions/4722500/html5s-file-api-example-with-jquery) –