【问题标题】:Finding Extension of uploaded file (PHP) [duplicate]查找上传文件的扩展名(PHP)[重复]
【发布时间】:2022-02-25 21:26:17
【问题描述】:

我们可以从$_FILES["file"]["tmp_name"] 中找出原始文件的扩展名吗?例如 jpg 或 png 等?

【问题讨论】:

    标签: php file


    【解决方案1】:
    $name = $_FILES["file"]["name"];
    $ext = end((explode(".", $name))); # extra () to prevent notice
    
    echo $ext;
    

    【讨论】:

    • 请务必记住,文件扩展名只是对真实内容的提示。它可以是完全不同的内容。
    • @user1610743 一般规则是不信任任何用户内容。显然,可以检查文件头并确保它与扩展名匹配。示例是图像(JPEG、PNG 等)。
    • @webarto 只是想添加这条评论,因为这是谷歌搜索中弹出的第一个结果。由于不安全的文件扩展检查,存在许多易受攻击的网络事物。
    • @user1610743 我明白,我没有添加该通知,因为它超出了问题的范围,但既然它被接受了,我可能会这样做以希望防止有人犯错误。谢谢。
    • 让世界更安全一点:-)
    【解决方案2】:

    你可以使用pathinfo():

    $path_parts = pathinfo($_FILES["file"]["name"]);
    $extension = $path_parts['extension'];
    

    【讨论】:

    • 短版 - pathinfo($filename, PATHINFO_EXTENSION);
    • $ext = pathinfo($_FILES["file"]["name"])['extension'];
    • @JohnBallinger :亲爱的先生,第一个答案是被接受的答案呢?这是比这个更好的选择吗?
    【解决方案3】:

    是的,您可以使用$_FILES['file']['name'] 来获取上传文件的原始名称。请记住,扩展名可能并不总是代表文件的真实内容。

    【讨论】:

    • 我知道我们可以使用“名称”找到,但我想知道我们是否可以仅使用 tmp_name 找到。
    • @Peter, tmp_name 是 PHP 生成的随机文件名。您只能通过查看实际的原始名称来做到这一点。
    【解决方案4】:

    是的,假设它的名称准确无误。它将保留其原始名称和扩展名。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-11-25
      • 2012-05-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-28
      • 1970-01-01
      相关资源
      最近更新 更多