在javascript中验证扩展名以外的pdf文件?

在javascript中验证扩展名以外的pdf文件?,javascript,jsp,file-upload,file-format,Javascript,Jsp,File Upload,File Format,我为用户提供了这样上传文件的选项 <form action="#" onsubmit="return Checkfiles(this);"> <center><input type="file" id="filename"> <input type="submit" value="Go!"></center> </form> 当用户上传文件时,我使用以下javascript函数验证文件 <

我为用户提供了这样上传文件的选项

<form action="#" onsubmit="return Checkfiles(this);">
    <center><input type="file" id="filename"> 
    <input type="submit" value="Go!"></center>
    </form>

当用户上传文件时,我使用以下javascript函数验证文件

<script type="text/javascript">
        function Checkfiles()
        {
        var fup = document.getElementById('filename');
        var fileName = fup.value;
        var ext = fileName.substring(fileName.lastIndexOf('.') + 1);
        if(ext == "pdf" )
        {
        return true;
        } 
        else
        {
        alert("Upload pdf files only");
        fup.focus();
        return false;
        }
        }
    </script>

函数Checkfiles()
{
var fup=document.getElementById('filename');
var fileName=fup.value;
var ext=fileName.substring(fileName.lastIndexOf('.')+1);
如果(分机=“pdf”)
{
返回true;
} 
其他的
{
警报(“仅上传pdf文件”);
fup.focus();
返回false;
}
}
一切都很好地配合它。
但我想通过其他方式验证文件,而不仅仅是通过扩展名
我会给出这样做的理由。我将一个图像文件重命名为image.pdf,现在是pdf格式,但无法打开。

所以我想以精确的方式验证pdf文件。除了通过扩展以外,还有其他方法进行检查吗?
编辑
我想使用jsp页面在服务器端进行验证。那我该怎么办呢?

提前感谢:)

任何类型的javascript验证都只是为了方便用户。一切都应该在服务器端进行验证。用户可以轻松禁用或修改任何javascript代码

无论如何。不能在javascript中检查文件内容


在PHP中,您可以使用来根据文件的内容检测文件类型。大多数其他语言都应该有类似的功能。

据我所知,检查pdf是否真的是pdf只能在服务器端完成。你可以试着用IText或类似的东西打开它;我敢打赌,当您尝试打开或修改PDF之后的其他文件时,它会引发某种异常。

要在javascript上验证文件类型,以下是一些方法:

// Your way: getting the extension and checking it.
// I suggest this way instead of using indexOf:
var ext = fileName.split('.').reverse()[0]
// Splits by '.', reverse the array, and returns the first element

// Another way: checking the type of the file
if ( fup.files[0].type === 'application/pdf' ) {
    console.log( 'It is validated!' )
}
活生生的例子:感谢


但是,您应该像其他人所说的那样,在服务器端真正验证这一点。

@Maris Kiselovs我正在使用jsp页面进行上传,那么有没有任何方法可以使用同一jsp中的服务器端代码验证内容page@suraj这听起来像是个新问题。@Maris实际上这就是我真正想知道的。有什么办法吗that@suraj然后用更具体的问题更新您的问题,并添加jsp标记。请检查并尝试在这方面帮助我假设您曾经在服务器端验证过提交的表单。我不知道您是否在使用Struts、SpringMVC或其他框架,但通常在服务器端验证提交的表单时,都应该在服务器端验证PDF。就像我说的,你可以用IText这样的东西打开它。也许仅仅开放是不够的;在尝试使用它之后,您可能只会注意到它不是有效的PDF;阅读或改变它。如果无效,您只需重新显示表单,就像在字段值太长时那样。