Slik begrenser filtyper med HTML innspill filtype?

stemmer
16

Hvordan begrenser jeg filtyper med HTML-inngang filtype du?

jeg har dette

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

Jeg prøver å begrense typen til å bare iCalendar-formatet type.

Jeg ønsker også å sjekke det på serversiden. Hvordan gjør jeg dette i ASP.NET MVC ?

Publisert på 30/12/2009 klokken 00:43
kilden bruker
På andre språk...                            


5 svar

stemmer
20

Dessverre kan du ikke begrense filtypen som du kan i en standard dialog filbehandleren. Du kan imidlertid sjekke utvidelsen når brukeren velger en fil.

Du kan legge denne hendelsen behandleren.

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

og Javascript-funksjonen dette

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();
    }
}

Du bør også sjekke det på serveren, ved hjelp av:

filebox.PostedFile.FileName

og:

filebox.PostedFile.ContentType
Svarte 30/12/2009 kl. 00:51
kilden bruker

stemmer
3

tekst / kalender er riktig MIME-type

<input type="file" id="fileUpload" name="fileUpload" size="23" accept="text/calendar" />
Svarte 30/12/2009 kl. 00:53
kilden bruker

stemmer
0

Du kan ikke spesifisere hva slags filer brukeren kan velge. Du kan bruke Javascript for å hindre brukeren fra å sende inn skjemaet, men det er ikke godt nok. Javascript kan enkelt deaktiveres i nettleseren. Du trenger logikk på serversiden som evaluerer innholdstypen for opplasting (selv bare sjekke filtypen er virkelig ikke bra nok) ...

HttpPostedFile file = Request.Files(0);

if(file.ContentType != "text/calendar")
{
    //Error
}
Svarte 30/12/2009 kl. 00:57
kilden bruker

stemmer
0

instaed av aksepterer du bør bruke contetypes attributt merke til at det er enkelt "t" i contentypes

og i serverkoden sjekk som dette

HttpPostedFileBase fil = Request.Files [0];

if (! file.ContentType.startsWith ( "text / kalender")) {//} Error

håper dette vil Søve problemet ditt preg mitt svar hvis det vil.

Svarte 30/12/2009 kl. 10:22
kilden bruker

stemmer
0

Jeg personlig foretrekker noe som Uploadify som lar deg gjøre dette, og gir også en fancy fremdriftslinje ... Jeg vet ikke om det er en litt for "tung vekt" for deg selv.

Svarte 31/12/2009 kl. 03:21
kilden bruker

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