Javascript 限制允许的文件类型或获取所选文件的文件名

Javascript 限制允许的文件类型或获取所选文件的文件名,javascript,jquery,html,Javascript,Jquery,Html,我试图了解如何允许用户在单击文件类型的输入时打开文件浏览窗口时仅选择某些文件。我想不出解决这个问题的办法。有什么想法吗?我原以为accept属性会起作用,但我没有那么幸运,下面的实现是否正确 <input id="file_zip" type="file" name="file_zip" accept="zip" /> @marc.d展示了一种很好的方法,可以将检查放入submit事件中,这样可以工作,并且不会让任何不希望的扩展通过 如果您想要更高级的功能,如对某些文件类型过滤“选

我试图了解如何允许用户在单击文件类型的
输入时打开文件浏览窗口时仅选择某些文件。我想不出解决这个问题的办法。有什么想法吗?我原以为
accept
属性会起作用,但我没有那么幸运,下面的实现是否正确

<input id="file_zip" type="file" name="file_zip" accept="zip" />

@marc.d展示了一种很好的方法,可以将检查放入
submit
事件中,这样可以工作,并且不会让任何不希望的扩展通过


如果您想要更高级的功能,如对某些文件类型过滤“选择文件…”,您可以使用基于Flash的高级文件上载控件。然而,这些基于Flash的上传的工作方式与表单元素略有不同,您必须看看它是否适合您。

@marc.d展示了一种将检查放入
提交
事件的好方法,它将工作,并且不会让任何不需要的扩展通过


如果您想要更高级的功能,如对某些文件类型过滤“选择文件…”,您可以使用基于Flash的高级文件上载控件。但是,这些基于Flash的上传与表单元素的工作方式略有不同,您必须查看它是否适合您。

您可以在提交之前检查文件扩展名,下面是一些示例代码

   $("#DocumentUploadForm").submit(function(data) {

        //File-Extension Check - does _NOT_ replace a server-side validation
        var filename = $("#FileToUpload").val()
        if (filename.length == 0) { return false };

        var dot = filename.lastIndexOf(".");
        if (dot == -1) { return false };


        var extension = filename.substr(dot, filename.length).toLowerCase();
        var extensionWhitelist = new Array(".doc", ".docx", ".xls", ".xlsx",
                                            ".pdf", ".odt", ".jpg", ".gif", ".png",
                                            ".tif", ".tiff", ".jpeg");

        if ($.inArray(extension, extensionWhitelist) == -1) {
            alert("The file extension " + extension + " is not allowed.");
            return false
        };


    });

但是您仍然需要执行服务器端检查,这也是唯一可以检查文件实际类型的地方。

您可以在提交之前检查文件扩展名,下面是一些示例代码

   $("#DocumentUploadForm").submit(function(data) {

        //File-Extension Check - does _NOT_ replace a server-side validation
        var filename = $("#FileToUpload").val()
        if (filename.length == 0) { return false };

        var dot = filename.lastIndexOf(".");
        if (dot == -1) { return false };


        var extension = filename.substr(dot, filename.length).toLowerCase();
        var extensionWhitelist = new Array(".doc", ".docx", ".xls", ".xlsx",
                                            ".pdf", ".odt", ".jpg", ".gif", ".png",
                                            ".tif", ".tiff", ".jpeg");

        if ($.inArray(extension, extensionWhitelist) == -1) {
            alert("The file extension " + extension + " is not allowed.");
            return false
        };


    });

但是您仍然需要执行服务器端检查,这也是唯一可以检查文件实际类型的地方。

工作完成。为什么我把事情复杂化了,而不仅仅是在提交时检查!谢谢,马克,完成了。为什么我把事情复杂化了,而不仅仅是在提交时检查!谢谢marc.SWFUpload会给我更多的控制,但我被禁止在这个项目中使用Flash!!SWFUpload会给我更多的控制,但我被禁止在这个项目中使用Flash!!