JSFiddle - React, Tailwind, and code Playground
HTML
<body>
<form onsubmit="Validation">
<div id="deplacemoi">J'accepte les fichiers déplacés !</div>
</form>
</body>
CSS
div {
margin: 50px auto;
text-align: center;
}
#deplacemoi {
padding-top: 40px;
width: 400px;
height: 60px;
border: 2px solid #222;
background-color: #888;
}
JavaScript
var _validFileExtensions = [".jpg", ".jpeg", ".bmp", ".gif", ".png"];
function validate(files) {
var arrInputs = files;
for (var i = 0; i < arrInputs.length; i++) {
var oInput = arrInputs[i];
console.log(oInput.type)
var sFileName = oInput.name;
if (sFileName.length > 0) {
var blnValid = false;
for (var j = 0; j < _validFileExtensions.length; j++) {
var sCurExtension = _validFileExtensions[j];
if (sFileName.substr(sFileName.length - sCurExtension.length, sCurExtension.length).toLowerCase() == sCurExtension.toLowerCase()) {
blnValid = true;
break;
}
}
if (!blnValid) {
alert("Désolez, " + sFileName + " n'est pas valide, les extensions autorisées sont : " + _validFileExtensions.join(", "));
return false;
}
}
return false;
}
return true;
}
var dropper = document.querySelector('#deplacemoi');
dropper.addEventListener('dragover', function(e) {
e.preventDefault(); // Annule l'interdiction de "drop"
}, false);
dropper.addEventListener('drop', function(e) {
e.preventDefault();
var files = e.dataTransfer.files,
filesLen = files.length,
mimeType = [],
filenames = "";
if(validate(files)){
for(var i = 0 ; i < filesLen ; i++) {
mimeType[i] = files[i].type;
filenames += '\n' + files[i].name + ' type : ' + mimeType[i];
}
console.log(files.length + ' fichier(s) :\n' + filenames);
}else{
console.log("Extension non autorisée");
}
}, false);