Autor Zpráva
Vilak
Profil
Zdravím. Mám udělaný code na nahrávání fotek na web, které mi funguje. A chci k tomu ještě dotvořit to, aby to třeba každou fotku zmenšilo třeba o 50 % a nahrálo ji to do jiné složky (třeba miniatura). Normální code na nahrávání ukážu níže. Jinak jsem už hledal jak to udělat, ale z anglických tutoriálů jsem to - bohužel - moc nepochopil, protože má znalost angličtiny je celkem bídná.

code (dopíšu poznámky):
if (isset($_POST['add_photo'])) {
         if (!file_exists("../../galerie")) {
             mkdir("../../galerie", 0777); // tady by se měly nahrávat normální fotky
         }
         if (!file_exists("../../miniatury")) {
             mkdir("../../miniatury", 0777); // tady miniatury
         }
         $upload_dir = "../../galerie/";

         $suffix = array("jpg", "jpeg", "png", "gif", "ico", "JPG", "JPEG");
         $message = "";
         include "../prevodni-tabulka.php";
         include "../db/db.php";

         if (isset($_FILES['images']) && is_array($_FILES['images']['name'])) {
             $counter = 0;
            $not_uploaded = 0;
            $filenames = [];
            $filenames1 = [];
            $add_message = 1;
            $add_message1 = 1;
            $suffix = array_flip($suffix);
            $url_img = $_SERVER['SERVER_NAME']; // možná je tu pár proměnných zbytečně iniciovaných, protože jsem něco zkoušel a zatím neopravil

             foreach ($_FILES['images']['name'] as $key => $name) { // cyklus pro nahrávání fotek
                 $filename = basename($name);
                 $tmpname = $_FILES['images']['tmp_name'][$counter];
                 var_dump($tmpname, $filename)."<br>";

                 if ($_FILES['images']['error'] == UPLOAD_ERR_NO_FILE) {
                     $message .= "Nevybrali jste fotky, které chcete nahrát.<br>";
                     header("Location: ../../galerie.php?message=$message");
                 }
                 if (!$_FILES || $_FILES['images']['error'] == UPLOAD_ERR_INI_SIZE) {
                     $not_uploaded++;
                     $sum = $counter + $not_uploaded;
                     if ($sum == sizeof($_FILES['images']['name'])) {
                         $message .= "Soubor je příliš velký, maximální velikost souboru je " . ini_get('upload_max_filesize') . ".<br>";
                     }
                     continue;
                 }
                 if (!is_uploaded_file($tmpname) || !isset($suffix[strtolower(pathinfo($filename, PATHINFO_EXTENSION))])) {
                     $not_uploaded++;
                     $sum = $counter + $not_uploaded;

                     if ($sum == sizeof($_FILES['images']['name'])) {
                         $message .= "Některé soubory obsahují nepovolenou koncovku. Povolené jsou pouze .jpg, .jpeg, .png, .gif a .ico. ";
                     }
                     continue;
                 }
                 $filename = rand(1000, 9999)."-".rand(10, 99)."-".$filename;
                 if (move_uploaded_file($tmpname, "{$upload_dir}".DIRECTORY_SEPARATOR."{$filename}")) { // uploadnutí fotky a zápis do DB

                     $stmt = $conn->prepare("INSERT INTO `images` (`name`, `alt`) VALUES (?, ?)");
                     $stmt->execute(array(
                         $filename,
                         $filename
                     ));
                     $counter++;

                     $url1 = 
                     compress_image($_FILES["file"]['tmp_name'], $url1, 50);

                 }
             }
             $message .= "Bylo nahráno {$counter} z ".sizeof($_FILES['images']['name'])." obrázků.";
             //header("location: ../../galerie.php?message=$message");
         }
     }

Byl bych rád za každou radu. Nevím, čeho se mám chytit. Pokud budete mít otázky, ptejte se. Předem děkuji za odpovědi. :)
Keeehi
Profil
Nejčastější potíže s PHP (FAQ) » Upload souborů

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: