Domanda

Ho intenzione di utilizzare questo programma di sistema/USR/Bin/File per determinare il tipo di contenuto del file caricato e quindi agire di conseguenza.

È una buona idea o ci sono cose a cui dovrei fare attenzione? (O usa qualcosa di completamente diverso)

È stato utile?

Soluzione

PHP ha il fileinfo L'estensione, che utilizza lo stesso meccanismo ma è originario di PHP.

Altri suggerimenti

mime_content_type e finfo_file sono i metodi preferiti per determinare un tipo MIME (uno dei due è spesso abilitato nella maggior parte delle distribuzioni PHP). Usano lo stesso database Magic.Mime dello strumento esterno, motivo per cui lo userei solo come fallback.

L'uso dello strumento esterno richiede anche l'estrazione del tipo di mime dall'output, quindi è in qualche modo coinvolgendo il codice:

$type = exec("/usr/bin/file -iL " .escapeshellcmd($fn). " 2>/dev/null");
if ($type = trim(strtok(substr(strrchr($type, ":"), 1), ";"))) {
    return $type;
}

Se la tua domanda riguarda l'affidabilità: sì, questo è un buon approccio. Determinare il tipo di file mediante byte magiche è abbastanza affidabile su tutti i server Linux/U*IX attuali.

Se è possibile utilizzare un'estensione PECL (o stai usando PHP> = 5.3), ti consiglio di utilizzare il Fileinfo estensione.

In caso contrario, il mime_content_type () La funzione farà, ma si prega di notare che ora è deprecata (a favore o fileinfo)

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top