1

我目前正在尝试找到一种方法来使用 jquery 来验证 aa 文件是否为图片格式(jpeg,jpg,bmp,gif,etc).length通过简单的比较,我已经能够确定输入是否为空。我如何能够检查文件类型并只接受有效的图片格式。

空或不输入:

if ($.trim($('#textInput').val()).length == 0) {
    alert("Should Not Be Empty!");
}
4

3 回答 3

3

给定一个文件输入:

var extension = $('#file_input').val().split('.').pop();
if (['bmp', 'gif', 'png', 'jpg', 'jpeg'].indexOf(extension) > -1) {
    console.log('validated');
} else {
    console.log('invalid extension');
}

对于更广泛的文件类型过滤,您最好使用服务器端验证。

于 2013-01-31T17:44:05.347 回答
2

您可以制作一个简单的函数来提取文件的扩展名:

function getExtension(file) {
    return file.split('.').pop();
}

然后您可以检查输入值:

var file = $.trim($('#textInput').val());
if (['gif','png', ...].indexOf(getExtension(file)) > - 1) {
     ...
}

并检查这篇文章,也许有用:

如何在 HTML5 中验证以仅允许在“输入类型 =“文件””中使用 JPG、GIF 或 PNG?

于 2013-01-31T17:45:24.083 回答
2

出于安全原因,您不应使用 javascript 测试有效的文件类型。Javascript 只是客户端,因此您的脚本很容易被规避,或者用户可以简单地使用单独的扩展名重命名他们的文件,您的检查点将失败。

查看用户上传文件的MIME 类型和服务器端验证。这是一个复杂的主题,由您决定要花多少时间在上面。更彻底的检查会增加安全性。

我使用的检查是文件大小、MIME 类型和上传位置(以确保没有人试图从远程站点上传脚本)。PHP 中的这些函数是filesizefileinfomime_content_typeis_uploaded_file。类似的功能也存在于其他语言中。

例如,您可以进一步测试文件的位,以确保它不是恶意代码或伪装成 JPEG 的文件,例如通过欺骗 MIME 标头。

于 2013-01-31T18:01:19.027 回答