Wie kann ich überprüfen, ob der Benutzer eine Datei zum Hochladen ausgewählt hat?
Edit: gestoßen
Ali
Wie kann ich überprüfen, ob der Benutzer eine Datei zum Hochladen ausgewählt hat?
Edit: gestoßen
Sietse
Überprüfe es value
Eigentum:
In jQuery (da Ihr Tag es erwähnt):
$('#fileInput').val()
Oder in Vanille-JavaScript:
document.getElementById('myFileInput').value
Ravinder Singh
Meine Funktion prüft, ob der Benutzer die Datei ausgewählt hat oder nicht, und Sie können auch prüfen, ob Sie diese Dateierweiterung zulassen möchten oder nicht.
Versuche dies:
<input type="file" name="fileUpload" onchange="validate_fileupload(this.value);"> function validate_fileupload(fileName) { var allowed_extensions = new Array("jpg","png","gif"); var file_extension = fileName.split('.').pop().toLowerCase(); // split function will split the filename by dot(.), and pop function will pop the last element from the array which will give you the extension as well. If there will be no extension then it will return the filename. for(var i = 0; i <= allowed_extensions.length; i++) { if(allowed_extensions[i]==file_extension) { return true; // valid file extension } } return false; }
Die for-Schleife sollte i
– KevInSol
25. Juni 2015 um 12:55 Uhr
Nur um zu erwähnen. dass, indem Sie nach der Erweiterung suchen, Sie Personen erlauben, .exe-Dateien hochzuladen, indem Sie die Erweiterung vortäuschen.
– Danny van Holten
22. Juni 2020 um 7:31 Uhr
Aufbauend auf Ravinders Lösung stoppt dieser Code das Absenden des Formulars. Es kann ratsam sein, die Erweiterung auch auf der Serverseite zu überprüfen. Hacker können also nichts hochladen, was sie wollen.
<script>
var valid = false;
function validate_fileupload(input_element)
{
var el = document.getElementById("feedback");
var fileName = input_element.value;
var allowed_extensions = new Array("jpg","png","gif");
var file_extension = fileName.split('.').pop();
for(var i = 0; i < allowed_extensions.length; i++)
{
if(allowed_extensions[i]==file_extension)
{
valid = true; // valid file extension
el.innerHTML = "";
return;
}
}
el.innerHTML="Invalid file";
valid = false;
}
function valid_form()
{
return valid;
}
</script>
<div id="feedback" style="color: red;"></div>
<form method="post" action="/image" enctype="multipart/form-data">
<input type="file" name="fileName" accept=".jpg,.png,.bmp" onchange="validate_fileupload(this);"/>
<input id="uploadsubmit" type="submit" value="UPLOAD IMAGE" onclick="return valid_form();"/>
</form>
Zumindest in Firefox sagt mir der DOM-Inspektor, dass die Dateieingabeelemente eine Eigenschaft namens haben files
. Sie sollten in der Lage sein, seine Länge zu überprüfen.
document.getElementById('myFileInput').files.length
Chaitu
Ich habe das aus irgendeinem Forum. Ich hoffe, es wird für Sie nützlich sein.
<script type="text/javascript">
function validateFileExtension(fld) {
if(!/(\.bmp|\.gif|\.jpg|\.jpeg)$/i.test(fld.value)) {
alert("Invalid image file type.");
fld.form.reset();
fld.focus();
return false;
}
return true;
} </script> </head>
<body> <form ...etc... onsubmit="return
validateFileExtension(this.fileField)"> <p> <input type="file"
name="fileField" onchange="return validateFileExtension(this)">
<input type="submit" value="Submit"> </p> </form> </body>
Willkommen bei S.O. Wenn Sie Code aus einer anderen Quelle erhalten, sollten Sie ihn ordnungsgemäß benennen und/oder darauf verlinken, da dies eine Verletzung des Urheberrechts darstellen könnte, und es ist zumindest höflich, dies an angemessener Stelle zu würdigen.
– Scott
28. Oktober 2012 um 10:55 Uhr
ßâlâjî
Einfacher und leistungsfähiger Weg (dynamische Validierung)
Platzieren Sie Formate in einem Array wie “image/*”
var upload=document.getElementById("upload");
var array=["video/mp4","image/png"];
upload.accept=array;
upload.addEventListener("change",()=>{
console.log(upload.value)
})
<input type="file" id="upload" >
Willkommen bei S.O. Wenn Sie Code aus einer anderen Quelle erhalten, sollten Sie ihn ordnungsgemäß benennen und/oder darauf verlinken, da dies eine Verletzung des Urheberrechts darstellen könnte, und es ist zumindest höflich, dies an angemessener Stelle zu würdigen.
– Scott
28. Oktober 2012 um 10:55 Uhr