Is it possible to get a file extension without knowing it?

后端 未结 4 1299
礼貌的吻别
礼貌的吻别 2021-02-14 14:52

I have a file called 94bf663a100e848fb599209af8cdc2b5.wmv. I know pathinfo will not give me the extension if I just use the name 94bf663a100e848fb599209af8cdc2b5. I

相关标签:
4条回答
  • 2021-02-14 15:10

    As the example on the php glob manual page suggests, glob does not simply check if the file exists, it returns every file that matches the expression.

    Here's a modification of the example on that page for your needs:

    $name = "94bf663a100e848fb599209af8cdc2b5";
    $matching = glob($name . ".*");
    
    $info = pathinfo($matching[0]);
    $ext = $info['extension'];
    

    This assumes there is one (and only one) file with that name (with any extension), but you should be able to modify it if the file might not exist, or there might be multiple files with the same name, and different extensions.

    0 讨论(0)
  • 2021-02-14 15:17

    The finfo_file() function will inspect the byte signature of a file to return its mimetype. From there, you can mostly deduce the correct file extension.

    // Adapted from the PHP docs
    $finfo = finfo_open(FILEINFO_MIME_TYPE); // return mime type ala mimetype extension
    echo finfo_file($finfo, $filename);
    finfo_close($finfo);
    
    0 讨论(0)
  • 2021-02-14 15:27

    The first few characters of the file (binary) will usually give you some kind of hint about what the file type is.

    Try it out by opening some binary files (rar, zip, mp3 etc.) in Notepad.

    0 讨论(0)
  • 2021-02-14 15:31

    Try filetype() or mime_content_type() function in php... pass the file path it returns the file type.

    0 讨论(0)
提交回复
热议问题