21 září 2008

Upload obrázku na server pomocí PHP

PHP 5.x

Formulář pro upload obrázku na server:

index.htm

<form action="upload.php" method="post" enctype="multipart/form-data">
<input type="file" name="file" accept="image/*" /><br />
<input type="submit" name="submit" value="Odeslat" />
</form>

Zpracování formuláře:

upload.php



/*
1 E_ERROR
2 E_WARNING
4 E_PARSE
8 E_NOTICE
16 E_CORE_ERROR
32 E_CORE_WARNING
64 E_COMPILE_ERROR
128 E_COMPILE_WARNING
256 E_USER_ERROR
512 E_USER_WARNING
1024 E_USER_NOTICE
6143 E_ALL
2048 E_STRICT
4096 E_RECOVERABLE_ERROR
8192 E_DEPRECATED
16384 E_USER_DEPRECATED
*/

error_reporting(E_ALL | E_STRICT); // Error_Reporting(0); vypíná výpis všech chybových hlášení - Warning:

// vypsání souborových proměnných
/*
$_FILES['upload']['name']
$_FILES['upload']['type']
$_FILES['upload']['size']
$_FILES['upload']['tmp_name']
$_FILES['upload']['error']
*/

echo "<strong>print_r:</strong><pre>";
print_r($_FILES); // debugging info - testovací výpis pole
echo "</pre><br /><br />";
echo "<strong>var_dump:</strong> ";
var_dump($_FILES['upload']['name']); // debugging info - výpis konkrétní proměnné
echo "<br />";
var_dump($_FILES['upload']['type']);
echo "<br />";
var_dump($_FILES['upload']['tmp_name']);
echo "<br />";
var_dump($_FILES['upload']['error']);
echo "<br />";
var_dump($_FILES['upload']['size']);
echo "<br /><br />";

// výpis informací o uploadovaném souboru
echo "Jméno [name] uploadovaného souboru je: ".$_FILES['upload']['name']."<br />";
echo "Typ [type] uploadovaného souboru je: ".$_FILES['upload']['type'] ."<br />";
echo "Dočasné jméno [tmp_name] uploadovaného souboru je: ".$_FILES['upload']['tmp_name'] ."<br />";
echo "Číslo chyby [error] uploadovaného souboru je: ".$_FILES['upload']['error'] ."<br />";
echo "Velikost [size] v bytech uploadovaného souboru je: ".$_FILES['upload']['size'] ." bytů<br />";
echo "<br /><br />";

// kontrola jestli je co uploadovat
if(!$_FILES['upload']['name']) {
echo "Nebyl vybrán soubor";
echo '<br /><a href="index.php">Zkus to znovu</a><br />';
} else {
echo "Soubor byl úspěšně uploadován na server";
echo '<br /><a href="index.php">Pokračuj</a><br />';
}

// odstranění diakritiky i pro multi-byte (napr. UTF-8)
$prevodni_tabulka = Array(
'ä'=>'a',
'Ä'=>'A',
'á'=>'a',
'Á'=>'A',
'č'=>'c',
'Č'=>'C',
'ć'=>'c',
'Ć'=>'C',
'ď'=>'d',
'Ď'=>'D',
'ě'=>'e',
'Ě'=>'E',
'é'=>'e',
'É'=>'E',
'ë'=>'e',
'Ë'=>'E',
'í'=>'i',
'Í'=>'I',
'ľ'=>'l',
'Ľ'=>'L',
'ń'=>'n',
'Ń'=>'N',
'ň'=>'n',
'Ň'=>'N',
'ó'=>'o',
'Ó'=>'O',
'ö'=>'o',
'Ö'=>'O',
'ř'=>'r',
'Ř'=>'R',
'ŕ'=>'r',
'Ŕ'=>'R',
'š'=>'s',
'Š'=>'S',
'ś'=>'s',
'Ś'=>'S',
'ť'=>'t',
'Ť'=>'T',
'ú'=>'u',
'Ú'=>'U',
'ü'=>'u',
'Ü'=>'U',
'ů'=>'u',
'Ů'=>'U',
'ý'=>'y',
'Ý'=>'Y',
'ž'=>'z',
'Ž'=>'Z',
'ź'=>'z',
'Ź'=>'Z'
);

// odstranit mezery na začátku i na konci řetězce
$bezmezer = trim($_FILES['upload']['name']);

// nahrazení jedné a více mezer pomlčkou, odstranění diakritiky
$editname = ereg_replace( ' +', '-', strtr($bezmezer, $prevodni_tabulka));

// převod na malá písmena - NUTNO DODRŽET POŘADÍ
//$lovercasename = strtolower($editname);

// překopíruje uploadovaný soubor z "tmp" do složky "obrazky" (lze vyčíst v phpinfo(); v DOCUMENT_ROOT)
copy($_FILES['upload']['tmp_name'],"/storage/www2/cesta/ke/wwwroot/obrazky/".$editname);


Proměnná $_FILES

$ _FILES ['userfile'] ['name']
Původní název souboru na klientském počítači.

$_FILES['userfile']['type']
MIME typ souboru, pokud prohlížeč tuto informaci poskytl. Např.: "image/gif".

$_FILES['userfile']['size']
Velikost uploadovaného souboru v bajtech.

$_FILES['userfile']['tmp_name']
Dočasný název souboru ve složce /tmp po uploadu na serveru.

$_FILES['userfile']['error']
Kód chyby spojené s uploadem na server. Tento prvek byl přidán v PHP 4.2.0.

2 komentáře:

  1. A podle tohoto kódu kam se to ukládá na server a jak to z něho vytáhnu jako obrázek ???

    OdpovědětVymazat
  2. Článek jsem aktualizoval, snad to teď bude jasnější. Kód je z doby, kdy jsem se snažil učit PHP.

    OdpovědětVymazat