Toon posts:

[php] mime type file op filesystem

Pagina: 1
Acties:

Verwijderd

Topicstarter
Hoe kan ik het mime filetype van een file op het filesystem achterhalen?

Bij files die geupload worden kan je de variable $veldnaam_TYPE gebruiken, dat weet ik. Maar ik zoek iets voor een file die op het filesystem staat.

Ik zou naatuurlijk een funcie kunnen maken die naar de extensie van de file kijkt (.gif is bijvoorbeeld "image/gif") maar dat vind ik een niet zo mooie oplossing aangezien er altijd een extensie kan zijn waar ik geen rekening mee hou.

  • mOrPhie
  • Registratie: September 2000
  • Laatst online: 20-08 15:04

mOrPhie

❤️❤️❤️❤️🤍

Voor alles zou ik het niet weten, maar voor image-types heb je de imagetype() functie. Meer info:
http://www.php.net/manual/en/function.imagetypes.php Succes

Een experimentele community-site: https://technobabblenerdtalk.nl/. DM voor invite code.


  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 17-08 23:56

Janoz

Moderator Devschuur®

!litemod

kan niet. Die mimetypes worden namelijk door de browser(bij het uploaden)/webserver(bij het downloaden) gegenereerd. Dit wordt oa bepaald door die extensie of door headers die je bv zelf toevoegd.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


  • TheMrH
  • Registratie: April 2000
  • Laatst online: 04-08 12:18
Je zou de mime.types file van Apache kunnen parsen/gebruiken/inlezen.....

The box said 'requires Windows 95 or better', so I installed Linux...


  • bgever
  • Registratie: April 2002
  • Laatst online: 28-05-2021
Misschien een beetje laat, maar dit is meer bedoeld voor searchfreakz. Ik was vandaag bezig om het zelfde te achterhalen, en heb toen deze functie geschreven.

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
function GetMimeFromFile($url, $host, $auth_user='', $auth_pass=''){
    $request = "HEAD $url HTTP/1.0\r\n".
               "Host: $host:80\r\n".
               "User-Agent: PHP/".phpversion()."\r\n";
    if($auth_user != '' AND $auth_pass != ''){
        $request .= "Authorization: Basic ".base64_encode($auth_user.':'.$auth_pass)."\r\n";
    }
    $request .= "\r\n";
    if($fp = fsockopen($host, 80)){
        fputs($fp, $request);
        while(!feof($fp)){
            $res = fgets($fp, 2048); //win32 limit 2048
            if(StrToLower(substr($res, 0, 12)) == 'content-type'){
                return trim(substr($res, 13));
            }
        }
    }
}

Je kunt de functie op twee manieren aanroepen, met of zonder Basic HTTP Athtentication. Je kunt dus ook het MIME type achterhalen van files die in een beveiligde map staan (als je het username en password weet).
vb:
GetMimeFromFile('http://www.domein.com/map/file.ext', 'domein.com');
of:
GetMimeFromFile('http://www.domein.com/map/file.ext', 'domein.com', 'username', 'password');