Как ограничить тип файла в элементе управления FileUpload - PullRequest
25 голосов
/ 06 мая 2010

Можно ли разрешить элементу управления загрузкой файлов показывать только изображения?

При нажатии кнопки «Обзор» должны отображаться только изображения.

Ответы [ 8 ]

47 голосов
/ 18 января 2015

В 2015 году веб-браузеры поддерживают атрибут ввода accept , поэтому вы можете сделать это:

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

Имейте в виду, что Visual Studio может показывать вам сообщение об этом как недопустимый атрибут инструмента FileUpload ASP.

22 голосов
/ 08 сентября 2011

Я не нашел прямого решения этой проблемы.

Это мой обходной путь с использованием 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>
13 голосов
/ 12 февраля 2013

Вы не можете строго ограничивать тип файла, но если браузер поддерживает его, вы можете заставить его изначально показывать только определенный тип файла:

<form method="post" action="blahblah.blah">
  <input type="file" name="image" id="image" accept="image/png, image/jpeg" />
</form>
7 голосов
/ 06 мая 2010

Нет, в сети вы не можете со стороны клиента, очевидно, со стороны сервера вы можете делать удивительные вещи. Для такого рода вещей программисты обычно используют Activex, flash и т. П.

3 голосов
/ 22 февраля 2013
//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"  />

Проверьте '_validFileFlag' при сохранении данных / загрузки.

2 голосов
/ 06 мая 2010

Предполагается, что вы имеете в виду загрузку только изображений.

Вы можете проверить свойство ContentType файла (например, image / gif).

Посмотрите здесь пример: http://www.15seconds.com/issue/061116.htm

1 голос
/ 22 мая 2017

Используйте атрибут accept, чтобы показывать только изображения в файловом браузере, как показано ниже -

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

с asp.nets RegularExpressionValidator для проверки выбранного типа файла с сообщением проверки.

<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>
1 голос
/ 06 мая 2010

С простой <input type="file">, я боюсь, что это невозможно на стороне клиента.

Однако некоторые сторонние загрузчики, такие как SWFUpload , предоставляют эту функцию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...