Autor | Zpráva | ||
---|---|---|---|
Pavel Vodnář Profil * |
#1 · Zasláno: 31. 1. 2011, 10:41:03
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 |
#2 · Zasláno: 31. 1. 2011, 10:57:42 · Upravil/a: Alphard
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 |
#3 · Zasláno: 31. 1. 2011, 11:10:38 · Upravil/a: Radek Cvek
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 * |
#4 · Zasláno: 31. 1. 2011, 11:11:08
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 |
#5 · Zasláno: 31. 1. 2011, 11:21:41 · Upravil/a: Radek Cvek
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 * |
#6 · Zasláno: 31. 1. 2011, 11:36:35
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 * |
#7 · Zasláno: 31. 1. 2011, 11:40:46
Děkuji - jak zakombinovat ty obrázkové typy do této podmíky?
if (isset($_FILES["fupload"]["name"])) |
||
panther Profil |
#8 · Zasláno: 31. 1. 2011, 11:42:36
Pavel Vodnář:
in_array a podmínka. |
||
Radek Cvek Profil |
#9 · Zasláno: 31. 1. 2011, 11:44:24 · Upravil/a: Radek Cvek
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 * |
#10 · Zasláno: 31. 1. 2011, 11:56:20
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 |
#11 · Zasláno: 31. 1. 2011, 11:58:38 · Upravil/a: panther
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 |
#12 · Zasláno: 31. 1. 2011, 12:02:53
zase překlep $kontrolaformonatu !
|
||
Pavel Vodnář Profil * |
#13 · Zasláno: 1. 2. 2011, 09:31:08
panther:
StrToLower($path['extension']) |
||
Pavel Vodnář Profil * |
#14 · Zasláno: 1. 2. 2011, 10:29:11
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 |
#15 · Zasláno: 1. 2. 2011, 10:33:34
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 * |
#16 · Zasláno: 1. 2. 2011, 10:46:44
panther:
proměnná $_FILES['file']['type' mi nevypisuje nic, znamená to že se musí deklarovat? Děkuji Vám |
||
Pavel Vodnář Profil * |
#17 · Zasláno: 1. 2. 2011, 11:05:29
Aha už vidim chybku $_FILES['file']['type'] => $_FILES['fupload']['type'] , díky
|
||
Časová prodleva: 13 let
|
0