Zde je jednoduchý skript, který Vám přiložený obrázek uloží do složky obrazky. Název souboru se pojmenovává podle timestampu (aktuální čas, den, měsíc, rok…) – trošku nevýhoda při kolizi. Nejdříve si vytvoříme HTML formulář a následně PHP skript:
<form method="post" enctype="multipart/form-data"><input type="file" name="obrazky[]" /><input type="submit" value="Nahrát na server!" /></form><?php// konfigurace$uploadDir = 'obrazky'; // adresar, kam se maji nahrat obrazky (bez lomitka na konci)$allowedExt = array('jpg', 'jpeg', 'png', 'gif'); // pole s povolenymi priponami// zpracovani uploaduif(isset($_FILES['obrazky']) && is_array($_FILES['obrazky']['name'])) {$counter = 0;$allowedExt = array_flip($allowedExt);foreach($_FILES['obrazky']['name'] as $klic => $nazev) { // zde poslané obrázky proměníme na proměnnou $nazev$nazev = htmlspecialchars($nazev, ENT_QUOTES);$fileName = basename(time() . ".png");$fileName = sprintf(time() . ".png", pathinfo($nazev, PATHINFO_EXTENSION));$tmpName = $_FILES['obrazky']['tmp_name'][$klic];$fileName = htmlspecialchars($fileName, ENT_QUOTES);// kontrola souboruif(!is_uploaded_file($tmpName)|| !isset($allowedExt[strtolower(pathinfo($fileName, PATHINFO_EXTENSION))])) {// neplatny soubor nebo priponacontinue;}// presun souboruif(move_uploaded_file($tmpName, "{$uploadDir}".DIRECTORY_SEPARATOR."{$fileName}")) {++$counter;}}if ($counter > 0)echo "<hr><p>Úspěšně byl nahrán {$counter} z ".sizeof($_FILES['obrazky']['name'])." obrázků, děkujeme!<br><br><b>Odkazy na obrázek</b>:<br>Klikatelný odkaz na obrázek:<br><a href='http://web.cz/$uploadDir/$fileName' target='_blank'>http://web.cz/$uploadDir/$fileName</a><br>Kopírovatelný odkaz na obrázek:<br><input type='text' name='f1' id='url' size='100%' value='http://web.cz/$uploadDir/$fileName' onclick='this.select(); PS.clickUrl();'><br></p>"."<br>";elseecho "<hr><b><font color='red'>CHYBA: Nenahráli jste žádný obrázek, nebo má obrázek špatnou příponu!</font></b><br>";}?>
A teď, co je v jednotlivých proměnných (tyto proměnné jsou znázorněny v kódu):
$uploadDir= relativně umístěná složka, do které se mají obrázky uložit (bez lomítka na konci)
$allowedExt = povolené přípony obrázku, ostatní nebudou nahrány
$nazev = nezpracovaný název souboru (tak jak jej má uživatel ve svém PC)
$fileName = koncový název souboru, se kterým můžeš dále pracovat
Proměnná $fileName se pro jistotu na řádku 23 ještě kontroluje pomocí htmlspecialchars, to aby se nemohl provést nebezpečný XSS útok (více zde). Proměnnou $nazev také radši kontroluji (ačkoliv to není nutné).
Velmi podobnou ukázku najdete na foto.mujskript.cz
V článku používáme materiály a funkce, které najdete také na MůjSkript.cz!