【问题标题】:How to get a extension of a file using jquery or javascript? [duplicate]如何使用 jquery 或 javascript 获取文件的扩展名? [复制]
【发布时间】:2011-05-09 01:42:47
【问题描述】:

我想检查上传文件的类型。如果名称像example.txt,我只想得到.txt 部分。我如何使用 Jquery 或 javascript 来实现它。

任何建议或链接将不胜感激!!!

【问题讨论】:

  • 文件的名称可能没有告诉你它实际包含的内容。
  • @Pointy:这是关于什么的?我无法理解。你是在谈论安全威胁吗!!!
  • 重点是任何人都可以轻松地更改文件名,从而获得所需的任何扩展名。这是否是任何形式的安全威胁取决于您的服务器打算如何处理该文件。
  • @Pointy:+1。我必须学习很多。谢谢!

标签: javascript jquery


【解决方案1】:

一个简单的解决方案是.split() 和.pop() 来获取数组中的最后一个字符串,如下所示:

var ext = fileName.split('.').pop();

这将使您只得到"txt" 而没有.,如果需要,只需附加。这也适用于:My.File.name.has.an extension.txt。如果它没有有扩展名,它会返回文件名,所以你可能想检查这个......或者去一个完全不同的方向并通过正则表达式验证一组或已知的扩展名.

【讨论】:

  • 这就是我要找的东西谢谢!!!
  • 当有查询字符串参数时,脚本将无法正常工作,例如/example/image.jpg?a=b&b=2,为了处理它,我又添加了一个拆分 file.split("?")[0].split('.').pop()(注意:很多时候系统在需要时使用查询字符串来防止缓存)
【解决方案2】:

使用lastIndexOf() 和substr():

function getFileExtension(name)
{
    int found = name.lastIndexOf('.') + 1;
    return (found > 0 ? name.substr(found) : "");
}

请注意,如果文件名不包含任何句点字符(即没有扩展名),此实现将返回一个空字符串。在这种情况下,基于split() 的实现有时会返回完整的文件名。

【讨论】:

    【解决方案3】:

    如果您需要验证多个扩展:

    var filename = "picture.jpg";
    var valid_extensions = /(\.jpg|\.jpeg|\.gif)$/i;   
    if(valid_extensions.test(filename))
    { 
       alert('OK');
    }
    else
    {
       alert('Invalid File');
    }
    

    如果您想检查扩展名(例如,在上传文件之前),则无需解析字符串。

    【讨论】:

    • foojpg 会匹配。正则表达式中的句点需要转义。
    • -1:解决评论并修复答案。
    【解决方案4】:
    var text = 'example.txt',
        ext  = text.split('.')[1];
    

    【讨论】:

    • 您可能希望至少使该语法有效。 编辑:你去吧。
    • 哈哈抱歉,键盘快点
    【解决方案5】:
        if((document.form1.upload.value.lastIndexOf(".jpg")==-1) {
       alert("Please upload only .jpg extention file");
       return false;
    }
    

    lastIndexOf 将返回指定搜索参数最后一次出现的索引。如果没有找到,-1 将返回

    【讨论】:

      【解决方案6】:

      用 . 分割整个文件名。作为分隔符。拆分会将拆分后的项目存储在一个数组中。取数组的最后一个元素。

      【讨论】:

        【解决方案7】:

        Frédéric 的回答对我来说效果很好,但是,该函数在 Chrome 控制台中不断出现“意外标识符”错误。 “int”有问题,这个修改有效。

        function getFileExtension(name){
          var found = name.lastIndexOf('.') + 1;
          return (parseInt(found) > 0 ? name.substr(found) : "");
        }
        

        【讨论】:

          猜你喜欢
          • 2018-03-06
          • 2010-09-16
          • 2014-01-10
          • 2011-09-14
          • 1970-01-01
          • 2019-03-22
          • 2012-05-09
          • 2019-11-17
          • 2023-03-08
          相关资源
          最近更新 更多