Na začiatok sa zmienim o tom, že ak chcete nahrávať na server musíte mať zvolený priečinok s CHMOD 777 inak sa Vám začnú zobrazovať chyby typu:
Warning: move_uploaded_file(/var/www/ ...
Nastavíte si ho veľmi jednoducho: napr. vo FileZille kde na Váš priečinok kliknete pravým tlačítkom a zvolíte atribúty súboru a v kolónke číselne nastavíte hodnotu 777.
Ak Vám ani napriek tomuto nastaveniu nepôjde upload treba ešte skontrolovať save_mode v súbore php.ini. Ja ho mám v /etc/php5/apache2/php.ini (distribúcia Ubuntu). Bližšie informácie a konfigurácie nájdete napr. na Google.
Ja sa zameriam na upload fotografií, konkrétne zmena fotografie užívateľa z anonymnej na jeho konkrétnu.(ale samozrejme si môžete skript prispôsobiť podľa chuti) Chcel by som aby bolo možné uploadnuť iba jeden formát fotografie (image/jpeg), ďalej aby bolo možné nahrať na server fotografiu do veľkosti 300kB a dobré by bolo ak by fotografie menili svoj názov poradovo (1, 2, 3…) z prostého dôvodu. Ak na server nahráte fotku rovnakého názvu starú fotografiu jednochudo prepíše, čo by mohlo spôsobovať problémy ak by nám dvaja rôzny ľudia nahrali na server fotografiu s názvom napr. 001.jpg ten prvý by mal asi smolu.
Pre takúto registráciu fotografií budeme potrebovať vytvoriť tabuľu v databáze, ktorá bude mať dva stĺpce. 1. stĺpec bude poradové číslo fotografií, čiže každá fotografia bude jedinečný identifikátor podľa neho sa bude prideľovať aj názov fotografie a
druhý stĺpec bude v mojom prípade meno uploadera, ktoré si prenášam cez SESSION. Tieto fotografie si budem overovať a ak budú spĺňať požiadavky cestu ku fotke z profilu užívateľa zmením z anonymnej na tú, ktorú si uploadol.
Tu je návrh tabuľky:
Kód: Vybrať všetko
CREATE TABLE `profil`.`vlastne_foto` (
`id` BIGINT NOT NULL,
`nick` VARCHAR( 31 ) NOT NULL ,
PRIMARY KEY ( `id` )
) ENGINE = MYISAMKód: Vybrať všetko
<form action="upload3.php" enctype="multipart/form-data" method="post">
Vyber fotografiu:<br />
<input type="file" name="fotografia" value"" /><br />
<br />
<input type="submit" name="nahrat" value="Nahrať na server">
</form>Kód: Vybrať všetko
<?php
if (isset($_POST['nahrat'])){
/* Nastavenie max. velkosti suboru v Bytoch */
$max_velkost = 310000;
$nick = $_SESSION['prezyvka'];
$server = "***";
$username = "***";
$password_databaza = "***";
@mysql_connect($server, $username, $password_databaza) or die("Nemozem nadviazat spojenie s databazou!");
@mysql_select_db('profil') or die("Nemozem vybrat databazu!");
$query = "SELECT id FROM vlastne_foto";
$result = mysql_query($query);
$poradie = mysql_numrows($result);
$nazov = $poradie + 1;
/* Nastavime konstantu */
define ("FILEREPOSITORY", "/var/www/foto/");
/* Presvedci sa, ci bol subor nahrany cez POST */
if (is_uploaded_file($_FILES['fotografia']['tmp_name'])) {
/* Ulozime si do premennej format uploadnuteho suboru */
$image_format = $_FILES['fotografia']['type'];
/* JE nas pozadovany typ suboru formatu JPG ? */
if ($image_format != "image/jpeg")
echo "Nezadali ste pozadovany format fotografie!";
/* Overme jeho velost v Bytoch */
else if ($_FILES['fotografia']['size'] > $max_velkost)
echo "Max. velkost fotografie moze byt 300kB!";
/* Ak je vsetko ako ma uploadneme subor na server */
else {
$result = move_uploaded_file($_FILES['fotografia']['tmp_name'], FILEREPOSITORY."/$nazov.jpg");
if ($result == 1) {
echo "<p>Subor bol uspesne uploadnuty!</p>";
$res = mysql_query("
INSERT INTO `profil`.`vlastne_foto` (
`id` ,
`nick`
)
VALUES (
'$nazov', '$nick'
)") or die(mysql_error());
}
else
echo "<p>Subor sa nepodarilo uploadnut!</p>";
}
}
}
?>