Autor Zpráva
Mufna
Profil
Zdravím Vás. Možná řeším v podstatě kravinu, ale chtěl bych do skritpu na multiupload fotek zakomponovat hlášku, která se zobrazí tehdy, pokud uživatel nevybere žádný soubor k nahrání. Ale pořád se mi to ne a ne povíst. Už jsem zkoušel všeliccos, ale prostě ne. Hlavně by to mělo mít logiku, tzn. hláška by se měla zobrazit skutečně jen tehdy, pokud uživatel nic do formuláře nevloží (jinak by se to samozřejmě dalo obejít, ale to nechci). Poradíte mi někdo ? Za nápady předem díky !

if (isset($_POST["upload"])) {
  
  foreach ($_FILES['userfile']['name'] as $key => $value) {
   if (is_uploaded_file($_FILES['userfile']['tmp_name'][$key])) {
    
     if ($_FILES['userfile']['type'][$key]>$upload_max_size) {
	 Header("Location: ".$_POST["return_page"]."?msg=U6");
	 exit;
     }
     if ($_FILES['userfile']['type'][$key]=="application/octet-stream") {
	 Header("Location: ".$_POST["return_page"]."?msg=U5");
	 exit;
     }
     if (!eregi('^[A-Za-z0-9_-]+\.jpe?g$',$_FILES['userfile']['name'][$key])) {
         Header("Location: ".$_POST["return_page"]."?msg=U3");
         exit;
     }

     $new_name=strtolower(eregi_replace('^([A-Za-z0-9_-]+)\.jpe?g$' , "\\1.jpg", $_FILES['userfile']['name'][$key]));
     $new_name=strtr($new_name," ","_");
     echo $new_name,';';

     $uploaddir = getcwd().'/photos';
     $uploadfile = $uploaddir . '/'.$new_name; 
     move_uploaded_file($_FILES['userfile']['tmp_name'][$key], $uploadfile);
   }
  }
}


Pro jistotu přikládám i výřez z kódu formuláře


$max_no_img=12;

    echo '<table border="0" width="400" cellspacing="0" cellpadding="0" align="center">';
    echo '<input type="hidden" name="MAX_FILE_SIZE" value="<?php echo $upload_max_size;?>">';
    echo '<input type="hidden" name="return_page" value="photos.php">';
    for($i=1; $i<=$max_no_img; $i++) {
        echo '<tr><td>Image '.$i.'</td>';
        echo '<td><input type="file" name="userfile[]" class=""></td></tr>';
	 
    }
    echo '</table>';
    echo '<input type="submit" name="upload" value="Nahrát fotografie">';

Ssob
Profil
Jestli je hodnota $_FILES['soubor']['error'] = 4, tak nebyl vybran zadny soubor. Ale nevim jestli to je dostatecna kontrola. Ja jeste pro jistotu pouzivam:
if (!is_file($_FILES['soubor']['tmp_name']))
{
   // error
}
Mufna
Profil
Tak už jsem to vyřešil. Pokud by to někoho zajímalo, tak jsem to udělal takto (možná je to trochu krkolomné, ale funguje to). Před funkci is_uploaded_file jsem ještě vložil kontrolu velikosti pro každé pole formuláře se souborem. Jakmile během cyklu foreach bude nalezeno [size] větší než 0, přičte se k $i s původní hodnotou 0 jednička. Pak už se jen stačí zeptat, zda $i je i po skončení cyklu 0 neno ne:

if (isset($_POST["upload"])) {

  $i=0; 
  foreach ($_FILES['userfile']['size'] as $key => $value) {
     if ($_FILES['userfile']['size'][$key]>0) {
        $i++;
     }
  }
  if ($i==0) {
     Header("Location: ".$_POST["return_page"]."?msg=U6");
     exit;
  }

  foreach ($_FILES['userfile']['name'] as $key => $value) {
     if (is_uploaded_file($_FILES['userfile']['tmp_name'][$key])) {

atd. atd.

Taps
Profil
Mufna
ahoj prosímtě mohl by ses mi ozvat na icq nebo na email mám ho v profilu díky

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:

0