Wie Dateitypen mit HTML-Eingabedateityp beschränken?

stimmen
16

Wie kann ich Dateitypen mit dem HTML-Eingabedateityp einschränken?

ich habe das

<input type=file id=fileUpload name=fileUpload size=23 accept=Calendar/ics/>

Ich versuche, die Art nur auf dem iCalendar-Format Typen zu beschränken.

Ich mag auch auf der Server - Seite überprüfen. Wie kann ich tun dies in ASP.NET MVC ?

Veröffentlicht am 30/12/2009 um 03:43
quelle vom benutzer
In anderen Sprachen...                            


5 antworten

stimmen
20

Leider können Sie die Dateierweiterung nicht einschränken möchten, können Sie in einem Standard-Dialog Dateibrowser. Sie können jedoch überprüfen Sie die Erweiterung, sobald der Benutzer eine Datei auswählt.

Sie können diese Ereignishandler hinzufügen.

filebox.Attributes.Add("onchange", "fileSelectedChanged(this);");

und diese JavaScript-Funktion

function fileSelectedChanged(obj) {
    var filePath = obj.value;

    var ext = filePath.substring(filePath.lastIndexOf('.') + 1).toLowerCase();
    if(ext != 'csv') {
        alert('Only files with the file extension CSV are allowed');
    } else {
        document.getElementById('form1').submit();
    }
}

Sie sollten es auch auf dem Server überprüfen, mit:

filebox.PostedFile.FileName

und:

filebox.PostedFile.ContentType
Beantwortet am 30/12/2009 um 03:51
quelle vom benutzer

stimmen
3

text / Kalender ist der richtige MIME-Typ

<input type="file" id="fileUpload" name="fileUpload" size="23" accept="text/calendar" />
Beantwortet am 30/12/2009 um 03:53
quelle vom benutzer

stimmen
0

Sie können nicht angeben, welche Art von Dateien der Benutzer auswählen kann. Sie können Javascript verwenden, um die Benutzer von Absenden des Formulars zu verhindern, aber das ist nicht gut genug. Javascript kann einfach im Browser deaktiviert werden. Sie müssen Logik auf der Server-Seite, die den Content-Typen des Upload auswertet (auch nur die Dateierweiterung Überprüfung ist wirklich nicht gut genug) ...

HttpPostedFile file = Request.Files(0);

if(file.ContentType != "text/calendar")
{
    //Error
}
Beantwortet am 30/12/2009 um 03:57
quelle vom benutzer

stimmen
0

instaed von akzeptieren Sie contetypes verwenden sollten Attribut feststellen, dass es einzelne „t“ in contentypes ist

und in Server Codeprüfung wie folgt

HttpPostedFileBase file = Request.Files [0];

if (! file.ContentType.startsWith ( "text / calendar")) {// Fehler}

hoffen, dass dies Ihr Problem an meine Antwort, wenn es wird sove wird.

Beantwortet am 30/12/2009 um 13:22
quelle vom benutzer

stimmen
0

Ich persönlich lieber etwas wie Uploadify , die Sie dies tun können, und auch ein schickes Statusleiste bietet ... Ich weiß nicht , ob das etwas ist zu „Schwergewicht“ für Sie aber.

Beantwortet am 31/12/2009 um 06:21
quelle vom benutzer

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more