Autor Zpráva
Pavel Vodnář
Profil *
Dobrý den, tvořím jednoduchý upload obrázku - chtěl by jsem se tomuto tématu věnovat úplně od začátku.

nejprve vytvořím v html:

<form action="pridat-inzerat.php" method="POST">
   		
	<table><p>
		<tr><td></td><td><input type="file" name="fupload" style="width:500px;"/></td></tr>
		
		<tr></tr>
		
		<tr><td></td><td><input type="submit" value="Odeslat"/></td></tr>
		</p>
	</table>




Co má probíhat dále v <?php ?> ?

Jaké položky vytvořit v DB pro upload obrázku?

Děkuji Vám
Alphard
Profil
Pavel Vodnář:
Měl byste trochu více studovat, nemáte správně ani ten formulář (chybí enctype). Četl jste aspoň http://www.linuxsoft.cz/article.php?id_article=310?
Radek Cvek
Profil
Nejjednodušší způsob:
<?php
  if (isset($_FILES["fupload"]["name"]))  
             { 
             if (is_uploaded_file($_FILES["fupload"]["tmp_name"])) 
               { 
               $name = $_FILES["fupload"]["name"]; 
               if (@move_uploaded_file($_FILES["fupload"]["tmp_name"], "./images/$name"))  
                 echo 'Soubor '.$name.' byl úspěšně nahrán';
                 else echo 'Nastala chyba'; 
               }  
             }
?>
<form action="pridat-inzerat.php" method="POST" ENCTYPE="multipart/form-data">
<table><p>
        <tr><td></td><td><input type="file" name="fupload" style="width:500px;"/></td></tr>        
        <tr></tr>        
        <tr><td></td><td><input type="submit" name="odesilani" value="Odeslat"/></td></tr>
        </p>
    </table>

Dobrá věc je toto: zmenšování obrázků - pro náhledy inzerátů
Do databáze takto
Pavel Vodnář
Profil *
Ano máte pravdu, chybělo to tam.

Vytvořil sem tento kód - nejprve pro zobrazení obrázku v prohližeči - ale nepracuje proč? Děkuji Vám



<?php
 
if (isset($_FILES['fupload']))
{

print "nazev:".				$_FILES['fupload']['name']	."<br/>";
print "velikost:".			$_FILES['fupload']['size']." bajtů<br/>";
print "dočasné umístění:".		$_FILES['fupload']['tmp_name']	."<br/>";
print "typ:".				$_FILES['fupload']['type']	."<br/>";
print "chyba:".				$_FILES['fupload']['error']	."<br/>";

if ($_FILES['fupload']['type'] == "image/pjpeg") 
{

$nazev_souboru = $_FILES['fupload']['tmp_name'];
$cil = "soubory/" .$_FILES['fupload']['name'];
move_uploaded_file($nazev_souboru, $cil)
or die ("Přenesený soubor nelze zkopírovat");


$size = getImageSize($cil);
$html_img_str ="<p><img width=\"$size[0]\" height=\"$size[1]\" ";
$html_img_str .= "src=\"$cil\" alt=\"přenesený obrázek\" /> </p>";
print $html_img_str;

}

}



 

?>


Radek Cvek
Profil
Funguje to - akorát překlep:
if ($_FILES['fupload']['type'] == "image/pjpeg")
... a samozřejmě takový kód funguje pouze pro obrázky ve formátu jpeg - což je pro inzertní portál dost nevhodné
teď jsem vygoogloval, že MIME TYP "image/pjpeg" existuje, ale podmínku bych přesto změnil, aby se neuploadovaly pouze obrázky jednoho typu - navíc, to "image/pjpeg" určitě nebude nejběžnější formát obrázku
obrákové MIME TYPY podle www.w3schools.com
image/bmp bmp
image/cis-cod cod
image/gif gif
image/ief ief
image/jpeg jpe
image/jpeg jpeg
image/jpeg jpg
image/pipeg jfif
image/png png
image/svg+xml svg
image/tiff tif
image/tiff tiff
image/x-cmu-raster ras
image/x-cmx cmx
image/x-icon ico
image/x-portable-anymap pnm
image/x-portable-bitmap pbm
image/x-portable-graymap pgm
image/x-portable-pixmap ppm
image/x-rgb rgb
image/x-xbitmap xbm
image/x-xpixmap xpm
Podmínku if ($_FILES['fupload']['type'] == "image/pjpeg") bych zaměnit za if (substr($_FILES['fupload']['type'], 0, 5) == 'image')
Pavel Vodnář
Profil *
Radek Cvek:
Výborně - upload běží - chtěl sem se zeptat jak tam vytvořit podmínku aby to nahrávalo pouze obrázky typu *.png *.jpeg *.JPG.

Pokud možno aby nešli nahrát další soubory? Děkuji Vám
Pavel Vodnář
Profil *
Děkuji - jak zakombinovat ty obrázkové typy do této podmíky?
if (isset($_FILES["fupload"]["name"]))  
Děkuji Vám
panther
Profil
Pavel Vodnář:
in_array a podmínka.
Radek Cvek
Profil
if (substr($_FILES['fupload']['type'], 0, 5) == 'image')
pokud jenom ty tři tak, jak radí panther - *.jpeg a *.JPG je podle MIME TYPU stejný
image/jpeg jpe
image/jpeg jpeg
image/jpeg jpg
Pavel Vodnář
Profil *
Když se to tedy pokusim udělat takto:

<?php

$kontrolaformatu = Array ('png', 'jpg', 'jpeg');



$path = PathInfo($_FILES['fupload']['name']);

if (!In_Array(StrToLower($path['extension']), $kontrolaformonatu))
{
  echo "Vkládaný soubor není obrázek!";
  exit;
}




  if (isset($_FILES["fupload"]["name"]))  
             { 
             if (is_uploaded_file($_FILES["fupload"]["tmp_name"])) 
               { 
               $name = $_FILES["fupload"]["name"]; 
               if (@move_uploaded_file($_FILES["fupload"]["tmp_name"], "./images/$name"))  
                 echo 'Soubor '.$name.' byl úspěšně nahrán';
                 else echo 'Nastala chyba'; 
               }  
             }
?>




Píše mi to u všeho echo "Vkládaný soubor není obrázek!"; Proč? Děkuji Vám
panther
Profil
Pavel Vodnář:
Píše mi to u všeho echo "Vkládaný soubor není obrázek!"; Proč?
podívej se, co je v StrToLower($path['extension']) a uvidíš.
Radek Cvek
Profil
zase překlep $kontrolaformonatu !
Pavel Vodnář
Profil *
panther:
StrToLower($path['extension'])
kdyžsi vypíšu tuto proměnnou, tak mi to nevypíše nic - kde je potom chyba? Děkuji Vám
Pavel Vodnář
Profil *
Oraveno jinak:



  if (isset($_FILES["fupload"]["name"]))  


{ 


  if ((is_uploaded_file($_FILES["fupload"]["tmp_name"])) && (in_array ( $_FILES['file']['type'], array ( "application/x-zip-compressed", "png", "jpg", "jpeg" )))) 
               { 
               $name = $_FILES["fupload"]["name"]; 
               if (@move_uploaded_file($_FILES["fupload"]["tmp_name"], "./images/$name"))  
                 echo 'Soubor '.$name.' byl úspěšně nahrán';
                 else echo 'Nastala chyba'; 
               }  
		else echo "Zadaný soubor není obrázek";
             }



Ale nevím si rady proč to nenahraje obrázek správného formátu? Děkuji Vám
panther
Profil
Pavel Vodnář:
Ale nevím si rady proč to nenahraje obrázek správného formátu?
tak znovu, co jsem ti psal už jednou v [#11]. Podívej se, co je v proměnné, tentokrát $_FILES['file']['type'] a uvidíš.
Pavel Vodnář
Profil *
panther:
proměnná $_FILES['file']['type' mi nevypisuje nic, znamená to že se musí deklarovat? Děkuji Vám
Pavel Vodnář
Profil *
Aha už vidim chybku $_FILES['file']['type'] => $_FILES['fupload']['type'] , díky

Vaše odpověď

Mohlo by se hodit

Odkud se sem odkazuje


Prosím používejte diakritiku a interpunkci.

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