Как ограничить тип файла в элементе управления FileUpload
Можно ли разрешить элементу управления загрузкой файлов показывать только изображения?
Когда мы нажимаем кнопку Обзор, на ней должны отображаться только изображения.
8 ответов
Нет, в Интернете вы не можете со стороны клиента, очевидно, со стороны сервера вы можете делать удивительные вещи. Для такого рода вещей программисты обычно используют Activex, flash или тому подобное.
В 2015 году веб-браузеры поддерживают входной атрибут accept, поэтому вы можете сделать это:
<asp:FileUpload ID="fileUploader" runat="server" accept=".png,.jpg,.jpeg,.gif" />
Я не нашел прямого решения этой проблемы.
Это мой обходной путь с использованием 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>
Вы не можете строго ограничивать тип файла, но если браузер поддерживает его, вы можете заставить его изначально показывать только определенный тип файла:
<form method="post" action="blahblah.blah">
<input type="file" name="image" id="image" accept="image/png, image/jpeg" />
</form>
//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' при сохранении данных / загрузки.
Предполагая, что вы имеете в виду загрузку только изображений.
Вы можете проверить ContentType
свойство файла (т.е. изображение /gif).
Посмотрите здесь пример: http://www.15seconds.com/issue/061116.htm
Используйте атрибут 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>
С равниной <input type="file">
Боюсь, это невозможно на стороне клиента.
Однако некоторые сторонние загрузчики, такие как SWFUpload, предоставляют эту функцию.