In primo luogo, trovare l'estensione:
Quindi chiamare il file che si desidera in ogni caso, e aggiungere al nome l'estensione:
$newFilename = "foobar" . $ext;
move_uploaded_file($_FILES['picture']['tmp_name'], 'peopleimages/' . $newFilename);
EDIT Pensare di esso, niente di tutto questo è ottimale. Le estensioni dei file il più delle volte descrivono il tipo di file, ma questo non è sempre il caso. Ad esempio, è possibile rinominare un file .png in un'estensione .jpg e la maggior parte delle applicazioni potrebbe comunque rilevare che si tratta di un file png. Oltre a questo, alcuni sistemi operativi semplicemente non usano le estensioni dei file per determinare il tipo di un file.
Con i caricamenti $_FILE
, viene fornito anche un elemento type
che rappresenta il tipo MIME del file ricevuto.Se è possibile, vi consiglio di fare affidamento su di esso invece che sul prolungamento data:
$imagetypes = array(
'image/png' => '.png',
'image/gif' => '.gif',
'image/jpeg' => '.jpg',
'image/bmp' => '.bmp');
$ext = $imagetypes[$_FILES['myfile']['type']];
si può avere un more complete list of MIME types here.
Io uso anche la is_uploaded_file() funzione per controllare se il file che stiamo indicando è in realtà un file caricato. –
@Niels Bom: 'move_uploaded_file' lo fa per te. – zneak
@zneak Sono corretto. –