Dies ist durchaus möglich. Verwenden Sie Javascript.
Ich benutze jQuery, um das Eingabeelement auszuwählen. Ich habe es mit einem On-Change-Ereignis eingerichtet.
$("#aFile_upload").on("change", function (e) {
var count=1;
var files = e.currentTarget.files;
for (var x in files) {
var filesize = ((files[x].size/1024)/1024).toFixed(4);
if (files[x].name != "item" && typeof files[x].name != "undefined" && filesize <= 10) {
if (count > 1) {
approvedHTML += ", "+files[x].name;
}
else {
approvedHTML += files[x].name;
}
count++;
}
}
$("#approvedFiles").val(approvedHTML);
});
Der obige Code speichert alle Dateinamen, die ich für würdig halte, auf der Übermittlungsseite zu bleiben, bevor die Übermittlung tatsächlich erfolgt. Ich füge die "genehmigten" Dateien mit jQuery zum Wert eines Eingabeelements hinzu, sodass ein Formular die Namen der Dateien sendet, die ich speichern möchte. Alle Dateien werden gesendet, jetzt müssen wir sie jedoch auf der Serverseite herausfiltern. Ich habe noch keinen Code dafür geschrieben, aber benutze deine Fantasie. Ich gehe davon aus, dass man dies durch eine for-Schleife erreichen und die vom Eingabefeld gesendeten Namen abgleichen und mit der Variablen $ _FILES (PHP Superglobal, sorry, ich kenne die Ruby-Dateivariable nicht) abgleichen kann.
Mein Punkt ist, dass Sie vor dem Einreichen nach Dateien suchen können. Ich mache das und gebe es dann an den Benutzer aus, bevor er das Formular absendet, um ihn wissen zu lassen, was er auf meine Site hochlädt. Alles, was die Kriterien nicht erfüllt, wird dem Benutzer nicht wieder angezeigt. Daher sollte er wissen, dass zu große Dateien nicht gespeichert werden. Dies sollte in allen Browsern funktionieren, da ich kein FormData-Objekt verwende.