8

我让用户可以选择上传这样的文件

<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>

一切都很好。
但我想通过其他方式验证文件,而不仅仅是通过它的扩展名
,我会给出这样做的理由。我将图像文件重命名为 image.pdf,现在它是 pdf 格式但无法打开。

所以我想以确切的方式验证一个pdf文件。除了扩展名之外,还有其他方法可以检查吗?
编辑
我想在服务器端使用 jsp 页面进行验证。那么我该怎么做呢?
提前致谢 :)

4

3 回答 3

10

要在 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!' )
}

现场示例:http: //jsbin.com/akati3/2感谢https://stackoverflow.com/a/4581316/851498

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

于 2012-04-25T07:03:57.767 回答
2

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

反正。您无法在 javascript 中检查文件内容。

在 PHP 中,您可以使用http://www.php.net/manual/en/function.finfo-file.php通过其内容来检测文件类型。大多数其他语言应该具有类似的功能。

于 2012-04-25T05:38:03.503 回答
0

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

于 2012-04-25T05:53:56.783 回答