如何按特定文件类型过滤 input type="file" 对话框?

IT技术 javascript html
2021-03-11 18:54:44

当我单击 .jpg 文件的浏览按钮时,我想将浏览器限制为 JPG 文件<input type="file">

是否可以浏览特定的文件类型?

5个回答

当文件对话框显示时,这将提供正确的(自定义)过滤器:

<input type="file" accept=".jpg, .png, .jpeg, .gif, .bmp, .tif, .tiff|image/*">
@jpoppe 这是一个小错误。如果您愿意,您实际上可以编辑答案并修复它。:)
2021-04-24 18:54:44
哈!不知道您实际上可以指定扩展名。我只是认为它必须是 mime 类型。但请注意:caniuse.com/#feat=input-file-accept,特别是注释编号 1
2021-04-26 18:54:44
@jpoppe,感谢您指出这一点,现已更正:)
2021-05-20 18:54:44

http://www.w3schools.com/tags/att_input_accept.asp

除了 Internet Explorer 和 Safari 之外,所有主要浏览器都支持 accept 属性。定义和用法

accept 属性指定服务器接受的文件类型(可以通过文件上传提交)。

注意:accept 属性只能与<input type="file">.

提示:不要将此属性用作验证工具。应在服务器上验证文件上传。

句法 <input accept="audio/*|video/*|image/*|MIME_type" />

提示:要指定多个值,请用逗号分隔这些值(例如<input accept="audio/*,video/*,image/*" />.

这使得 mp4 在 Safari 中无法选择。您还需要指定video/mp4.
2021-04-22 18:54:44
2021-04-23 18:54:44
谢谢.. 但是如何为 IE 修复它?
2021-04-27 18:54:44
FWIW IE 11 确实尊重这个属性
2021-04-28 18:54:44
你不修。这是你无法控制的。只需在 UI 中明确表示用户应该选择的是图像,并在服务器端对其进行验证。这就是“文件上传应该在服务器上验证”的意思。
2021-05-21 18:54:44
<asp:FileUpload ID="FileUploadExcel" ClientIDMode="Static" runat="server" />
<asp:Button ID="btnUpload" ClientIDMode="Static" runat="server" Text="Upload Excel File" />

.

$('#btnUpload').click(function () {
    var uploadpath = $('#FileUploadExcel').val();
    var fileExtension = uploadpath.substring(uploadpath.lastIndexOf(".") + 1, uploadpath.length);

    if ($('#FileUploadExcel').val().length == 0) {
        // write error message
        return false;
    }

    if (fileExtension == "xls" || fileExtension == "xlsx") {
        //write code for success
    }
    else {
        //error code - select only excel files
        return false;
    }

});
@pebbl 此 jquery 代码将与 ASP 控件一起允许仅过滤要上传的特定类型的文件
2021-04-27 18:54:44
@slavoo ~ 啊,这是有道理的......否则我会虽然你有点奇怪:) ty 进行澄清。
2021-05-04 18:54:44
@slavoo ~ 肯定要使用 ASP 输入,OP 需要运行 ASP?为什么在您的编辑中添加?UserAK47 的回答不需要它们。
2021-05-18 18:54:44
@pebbl 打开这篇文章的修订版并切换到side-by-side markdown修订版 2,您可以看到 asp 输入在我编辑之前就在这里,但不可见,因为它不在代码格式中。我只修复格式。
2021-05-19 18:54:44

您可以将 accept 属性与 . 它在 IE 和 Safari 中不起作用。

根据您的项目规模和可扩展性,您可以使用 Struts。Struts 提供了两种方式来限制上传的文件类型,声明式和编程式。

更多信息:http : //struts.apache.org/2.0.14/docs/file-upload.html#FileUpload-FileTypes

将自定义属性添加到<input type="file" file-accept="jpg gif jpeg png bmp">javascript 中并读取与该属性提供的扩展名匹配的文件名file-accept这将是一种伪造,因为具有上述任何扩展名的文本文件将被错误地检测为图像。