Tout d'abord, trouver l'extension:
$pos = strrpos($filename, '.');
if ($pos === false)
{
// file has no extension; do something special?
$ext = "";
}
else
{
// includes the period in the extension; do $pos + 1 if you don't want it
$ext = substr($filename, $pos);
}
ensuite appeler votre fichier de toute façon que vous voulez, et ajouter au nom de l'extension:
$newFilename = "foobar" . $ext;
move_uploaded_file($_FILES['picture']['tmp_name'], 'peopleimages/' . $newFilename);
EDIT y penser, rien de tout cela est optimal. Les extensions de fichier le plus souvent décrivent le type de fichier, mais ce n'est pas toujours le cas. Par exemple, vous pouvez renommer un fichier .png en une extension .jpg, et la plupart des applications détecteront toujours qu'il s'agit d'un fichier png. Autre que cela, certains systèmes d'exploitation n'utilisent tout simplement pas les extensions de fichiers pour déterminer le type d'un fichier. Avec les téléchargements $_FILE
, un élément type
représente le type MIME du fichier que vous avez reçu.Si vous le pouvez, je vous suggère de compter sur elle plutôt que sur l'extension donnée:
$imagetypes = array(
'image/png' => '.png',
'image/gif' => '.gif',
'image/jpeg' => '.jpg',
'image/bmp' => '.bmp');
$ext = $imagetypes[$_FILES['myfile']['type']];
Vous pouvez avoir un more complete list of MIME types here.
J'utilise aussi le is_uploaded_file() fonction pour vérifier si le fichier nous montrant est en fait un fichier téléchargé. –
@Niels Bom: 'move_uploaded_file' le fait pour vous. – zneak
@zneak Je me suis corrigé. –