2010-05-06 10 views
22

Czy można zezwolić, aby kontrola fileupload pokazywała tylko obrazy?Jak ograniczyć typ pliku w sterowaniu FileUpload?

Po kliknięciu przycisku Przeglądaj powinno być wyświetlane tylko obrazy.

+0

Co masz na myśli mówiąc: show? masz na myśli upload? –

+0

@Amgdy - "show" = wyświetla tylko pliki określonego typu w rzeczywistej przeglądarce plików, która pojawia się po kliknięciu przycisku "przeglądaj". – Jagd

Odpowiedz

7

Nie, w sieci nie można po stronie klienta, widocznie od strony serwera można robić niesamowite rzeczy. Do tego rodzaju programów programiści zwykle używają Activex, flash lub tym podobnych.

1

zwykły <input type="file">, obawiam się, że nie jest to możliwe na stronie klienta.

Jednak niektóre narzędzia do przesyłania innych firm, takie jak SWFUpload, zapewniają tę funkcję.

21

Nie znalazłem bezpośredniego rozwiązania tego problemu.

To mój obejście pomocą RegularExpressionValidator:

<asp:FileUpload ID="fuImportImage" runat="server" /> 
<asp:RegularExpressionValidator ID="regexValidator" runat="server" 
    ControlToValidate="fuImportImage" 
    ErrorMessage="Only JPEG images are allowed" 
    ValidationExpression="(.*\.([Jj][Pp][Gg])|.*\.([Jj][Pp][Ee][Gg])$)"> 
</asp:RegularExpressionValidator> 
10

Nie można ściśle ograniczać typ pliku, ale jeśli przeglądarka obsługuje go można spowodować, że początkowo pokazać tylko pewien typ pliku:

<form method="post" action="blahblah.blah"> 
    <input type="file" name="image" id="image" accept="image/png, image/jpeg" /> 
</form> 
3
//VALIDATE FILE EXTENTION 
var _validFileFlag; 
function fValidFileExt(vfilePath){ 
    var vFileName=vfilePath.split('\\').pop(); 
    var vFileExt=vfileName.split('.').pop(); 
    if(vFileExt.toUpperCase()=="JPEG" || vFileExt.toUpperCase()=="JPG"){ 
    _validFileFlag = true; 
    } 
    _validFileFlag = false; 
} 

<asp:FileUpload ID="FileUpload1" onchange="fValidFileExt(this.value);" runat="server" /> 

Sprawdź '_validFileFlag' podczas zapisywania danych/upload ..

33

W 2015 roku webbrowsers wspierać wejście zaakceptować atrybut, więc można to zrobić:

<asp:FileUpload ID="fileUploader" runat="server" accept=".png,.jpg,.jpeg,.gif" /> 
+5

To powinna być zaakceptowana odpowiedź. – mbomb007

+5

To nadal pozwoli użytkownikowi przesłać plik, który nie korzysta z żadnego z tych rozszerzeń. – jtate

+0

@ jtate Pytanie jest ograniczone do * show * only images. Zawsze powinieneś potwierdzić przesłanie (i dowolne dane wejściowe użytkownika) po stronie serwera, aby złapać kogoś, kto próbuje załadować coś niepożądanego. Użytkownik może po prostu zmienić nazwę rozszerzenia niepożądanego pliku na coś z listy akceptowanych. Powinieneś więc podejść do listy akceptacji w przesłanym pliku jako prosta pomoc dla użytkownika i przynajmniej zweryfikować ją na zapleczu. –

1

Zastosowanie przyjmować atrybut, aby wyświetlić tylko obrazy w przeglądarce plików jak poniżej -

<asp:FileUpload ID="FileUploadFileType" runat="server" CssClass="form-control" accept=".png,.jpg,.jpeg,.gif" /> 

z ASP .nets RegularExpressionValidator do sprawdzania poprawności wybranego typu pliku za pomocą komunikatu sprawdzania poprawności.

<asp:RegularExpressionValidator ID="RegExValFileUploadFileType" runat="server" 
         ControlToValidate="FileUploadFileType" 
         ErrorMessage="Only .jpg,.png,.jpeg,.gif Files are allowed" Font-Bold="True" 
         Font-Size="Medium" 
         ValidationExpression="(.*?)\.(jpg|jpeg|png|gif|JPG|JPEG|PNG|GIF)$"></asp:RegularExpressionValidator> 
Powiązane problemy