Autor Zpráva
msigmund
Profil
Dobrý den,
nedávno jsem zde řešil upload 3 obrázků, to se vyřešilo a malinko jsem to poupravil.
Problém nastane když nevložím 3, ale třeba jen jeden nebo dva. Do db se nahraje jen datum a vyhodí to error chmodu.
Potřebuji aby se nenáhrálo nic pokud tam není nic. Neumím si poradit s podmínkou, proto prosím o pomoc zde odborníky.

Ve formuláři mám 3x imput name obr1, obr2, obr3. Udělal jsem to tak aby se k obrázku přidal datum.
foreach($_FILES as $File){

$file = basename($File['name']);
$parse = explode(".", $file);
$suffix = end($parse);
    
array_pop($parse); 
$filename = implode(".", $parse);

    if ($File['error']===UPLOAD_ERR_OK){
      if(move_uploaded_file($File['tmp_name'], "../pic/" . $filename . "-" .  time() . "." . $suffix) == FALSE){  
            print'Obrazek '.$File['name'].' se neuložil?<br>';
        }else{  
            $cil = "../pic/" . $filename . "-" .  time() . "." . $suffix;
            chmod ($cil, 0777);
            print'Obrazek '.$File['name'].' se úspěšně nahrál.<br>';
        }
    }else{
        switch ($File['error']){
            case UPLOAD_ERR_INI_SIZE:
                print'Nahraný soubor přesáhne upload_max_filesize "php.ini" .<br>';
                break;
            case UPLOAD_ERR_PARTIAL:
                print'Nahraný soubor byl nahrán jen částečně.<br>';
                break;
            case UPLOAD_ERR_NO_FILE:
                print'Žádný soubor se nanahrál.<br>';
                break;
            case UPLOAD_ERR_CANT_WRITE:
                print'Nepodařilo se zapsat soubor na disk.<br>';
                break;
            default:
                print'Upload neznámá chyba.<br>';
                break;
        }
    } 
}

$taim = time();

$file1 = basename($_FILES['obr1']['name']);
$parse1 = explode(".", $file1);
$suffix1 = end($parse1);   
array_pop($parse1); 
$filename1 = implode(".", $parse1);
$a1 = "$filename1-$taim.$suffix1";


Do DB ukládám $a1, $a2, $a3

Děkuji všem za pomoc .

Moderátor Majkl578: Dovolil jsem si v názvu tématu opravit do očí bijící pravopisnou chybu. Původní titulek: "Nezávislí upload obrázků.".
AM_
Profil
http://cz.php.net/is-uploaded-file
tohle by ti mělo stačit.
msigmund
Profil
AM děkuji ti, o tom vím, ale neumím tak dobře anglicky a tak jsem to nepochopil.
AM_
Profil
Ani anglicky umět nemusíš, stačí se podívat na příklad:
"if (is_uploaded_file($_FILES['userfile']['tmp_name']))"
což v tvém případě, kdy $_FILES procházíš foreach, se bude zapisovat:
if (is_uploaded_file($File['tmp_name']))

Tato podmínka ověří, zda byl daný soubor opravdu uploadován (tedy zda uživatel vůbec nějaký soubor vybral a zároveň se úspěšně přenesl).
msigmund
Profil
Děkuji vyřešeno.
$file1 = basename($_FILES['obr1']['name']);

if ($file1!==""){

$parse1 = explode(".", $file1);
$suffix1 = end($parse1);   
array_pop($parse1); 
$filename1 = implode(".", $parse1);
$a1 = "$filename1-$taim.$suffix1";

}

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

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