Est-il possible d'utiliser l'événement drop
de jQuery pour faire glisser des fichiers depuis le bureau?
Si oui, comment puis-je obtenir les données du fichier déposé?
C'est un peu désordonné (vous devez gérer au moins 3 événements) mais possible.
Tout d'abord, vous devez ajouter des gestionnaires d'événements pour dragover
et dragenter
et empêcher les actions par défaut pour ces événements comme celui-ci:
$('#div').on(
'dragover',
function(e) {
e.preventDefault();
e.stopPropagation();
}
)
$('#div').on(
'dragenter',
function(e) {
e.preventDefault();
e.stopPropagation();
}
)
Il est en fait important d'appeler preventDefault
sur ces événements, sinon, certains navigateurs peuvent ne jamais déclencher l'événement drop
.
Ensuite, vous pouvez ajouter le gestionnaire de dépôt et accéder aux fichiers déposés avec e.originalEvent.dataTransfer.files
:
$('#div').on(
'drop',
function(e){
if(e.originalEvent.dataTransfer && e.originalEvent.dataTransfer.files.length) {
e.preventDefault();
e.stopPropagation();
/*UPLOAD FILES HERE*/
upload(e.originalEvent.dataTransfer.files);
}
}
);
Maintenant, vous pouvez faire glisser des fichiers depuis le bureau/Explorer/Finder dans la div et y accéder.