Bei der Verwendung <input type="file" multiple>
kann der Benutzer mehrere Dateien auswählen.
Wie legt man ein Limit für die Anzahl der Dateien fest, zum Beispiel zwei?
Bei der Verwendung <input type="file" multiple>
kann der Benutzer mehrere Dateien auswählen.
Wie legt man ein Limit für die Anzahl der Dateien fest, zum Beispiel zwei?
Antworten:
Sie können eine clientseitige jQuery-Validierung ausführen, um Folgendes zu überprüfen:
$(function(){
$("input[type='submit']").click(function(){
var $fileUpload = $("input[type='file']");
if (parseInt($fileUpload.get(0).files.length)>2){
alert("You can only upload a maximum of 2 files");
}
});
});
http://jsfiddle.net/Curt/u4NuH/
Denken Sie jedoch daran, dies auch auf der Serverseite zu überprüfen, da die clientseitige Validierung ganz einfach umgangen werden kann.
Bei Änderung der Eingabespur, wie viele Dateien ausgewählt sind:
$("#image").on("change", function() {
if ($("#image")[0].files.length > 2) {
alert("You can select only 2 images");
} else {
$("#imageUploadForm").submit();
}
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<strong>On change of the input track how many files are selected:</strong>
<input name="image[]" id="image" type="file" multiple="multiple" accept="image/jpg, image/jpeg" >
Dies sollte funktionieren und Ihr Formular vor dem Senden schützen, wenn die Anzahl der Dateien größer als max_file_number ist.
$(function() {
var // Define maximum number of files.
max_file_number = 3,
// Define your form id or class or just tag.
$form = $('form'),
// Define your upload field class or id or tag.
$file_upload = $('#image_upload', $form),
// Define your submit class or id or tag.
$button = $('.submit', $form);
// Disable submit button on page ready.
$button.prop('disabled', 'disabled');
$file_upload.on('change', function () {
var number_of_images = $(this)[0].files.length;
if (number_of_images > max_file_number) {
alert(`You can upload maximum ${max_file_number} files.`);
$(this).val('');
$button.prop('disabled', 'disabled');
} else {
$button.prop('disabled', false);
}
});
});
Eine weitere mögliche Lösung mit JS
function onSelect(e) {
if (e.files.length > 5) {
alert("Only 5 files accepted.");
e.preventDefault();
}
}
Sie sollten auch in Betracht ziehen, Bibliotheken zu verwenden, um dies zu tun: Sie ermöglichen Einschränkungen und vieles mehr:
FineUploader . Demo mit validation.itemLimit
ab 5.16.2:
var restrictedUploader = new qq.FineUploader({
validation: {
itemLimit: 3,
}
});
Das jQuery File Upload Plugin von bluimp . Verbrauch: jquery Datei laden Anzahl von Dateien beschränken Verwendung maxNumberOfFiles
als von v9.22.0:
$('#fileuploadbasic').fileupload({
maxNumberOfFiles: 6
});
Sie sind auch unter https://cdnjs.com/ verfügbar.
Verwenden Sie <input type=file>
stattdessen zwei Elemente ohne das multiple
Attribut.
Wenn Sie PHP wollen, können Sie das Array zählen und einfach eine if-Anweisung wie machen
if((int)count($_FILES['i_dont_know_whats_coming_next'] > 2)
echo "error message";