【问题标题】:Validating a pdf file other than its extension in javascript?在javascript中验证其扩展名以外的pdf文件?
【发布时间】:2012-05-05 19:04:39
【问题描述】:

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

<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 页面在服务器端进行验证。那么我该怎么做呢?
提前感谢 :)

【问题讨论】:

    标签: javascript jsp file-upload file-format


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

      无论如何。您无法在 javascript 中检查文件内容。

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

      【讨论】:

      • @Maris Kiselovs 我正在使用 jsp 页面进行上传,所以有什么方法可以使用同一 jsp 页面中的服务器端代码验证内容
      • @suraj 这听起来像是一个新问题。
      • @Maris 其实这就是我真正想知道的。有没有办法做到这一点
      • @suraj 然后用更具体的问题更新您的问题并添加 jsp 标签。
      【解决方案3】:

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

      【讨论】:

      • 我编辑了我的问题。请检查并尝试在这方面帮助我
      • 我想您曾经在服务器端验证过提交的表单。我不知道您是否正在使用某种框架,例如 Struts、Spring MVC 或其他框架,但是通常在服务器端验证提交的表单的任何地方,都应该验证 PDF。就像我说的那样,您可以通过使用 IText 之类的东西打开它来做到这一点。也许开放还不够;您可能会在尝试使用它之后才注意到它不是有效的 PDF;阅读或更改它。如果它无效,您只需重新显示您的表单,例如当字段值太长时。
      猜你喜欢
      • 1970-01-01
      • 2012-01-02
      • 2018-11-26
      • 1970-01-01
      • 2011-04-07
      • 2014-11-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多