Autor | Zpráva | ||
---|---|---|---|
jakubroz Profil |
#1 · Zasláno: 31. 5. 2008, 10:04:05
Ahoj,
Od Jakuba Vrány mam tento script pro upload. $koncovky = array('jpg', 'jpeg', 'png', 'gif'); $chyba = ""; if (!$_FILES || $_FILES["obrazek"]["error"] == UPLOAD_ERR_INI_SIZE) { $chyba = "Soubor je příliš velký, maximální velikost je " . ini_get('upload_max_filesize') . ".\n"; } elseif ($_FILES["obrazek"]["error"] == UPLOAD_ERR_NO_FILE) { $chyba = "Nevybrali jste soubor, který chcete nahrát.\n"; } elseif ($_FILES["obrazek"]["error"]) { $chyba = "Soubor se nepodařilo nahrát, kontaktujte prosím správce serveru.\n"; } elseif (!in_array(strtolower(pathinfo($_FILES["obrazek"]["name"], PATHINFO_EXTENSION)), $koncovky)) { $chyba = "Koncovka souboru musí být jedna z: " . implode(", ", $koncovky) . ".\n"; } elseif (!($imagesize = getimagesize($_FILES["obrazek"]["tmp_name"])) || $imagesize[2] > 3) { $chyba = "Typ obrázku musí být JPG, PNG nebo GIF.\n"; } else { move_uploaded_file($_FILES["obrazek"]["tmp_name"], "../data/$id-" . $_FILES["obrazek"]["name"]); } odesílací form je takhle: <strong>Portrét</strong> <br/><input type="file" name="obrazek"> Nevíte proč to nejde? Moc dik |
||
Matty Profil |
#2 · Zasláno: 31. 5. 2008, 10:05:10 · Upravil/a: Matty
jakubroz
A co to nedělá nebo co to vypisuje? Většinou bývá chyba v nastavení práv (chmod) pro adresář. |
||
jakubroz Profil |
#3 · Zasláno: 31. 5. 2008, 10:09:47
no právě mi to žádnou chybu nevypíše, jako by bylo vše v pořádku, ale v adresáři nic neni.
Chmod mam nastavit na 777? |
||
potom Profil |
#4 · Zasláno: 31. 5. 2008, 10:11:06 · Upravil/a: potom
Nene chyba je jinde,
nahraď move_uploaded_file za copy a pofrčí to, je to hostingem.......takže: move_uploaded_file($_FILES["obrazek"]["tmp_name"], "../data/$id-" . $_FILES["obrazek"]["name"]); nahraď copy($_FILES["obrazek"]["tmp_name"], "../data/$id-" . $_FILES["obrazek"]["name"]); 777 je samozřejmost :-) |
||
Matty Profil |
#5 · Zasláno: 31. 5. 2008, 10:11:11
jakubroz
Ano. CHMOD toho adresář na 777. |
||
Matty Profil |
#6 · Zasláno: 31. 5. 2008, 10:13:16
potom
To má být vtip? Funkce copy() je nedopručována a nahrazuje se funkcí move_uploaded_file. Nezačínáš tak trochu spamovat? |
||
potom Profil |
#7 · Zasláno: 31. 5. 2008, 10:15:56
Funkce move_uploaded_file nemusí fungovat všude
|
||
jakubroz Profil |
#8 · Zasláno: 31. 5. 2008, 10:16:00
jo funkcí copy to určitě nenahradim.
mě na hostingu normálně jde move_uploaded_file Chmod jsem nastavil, ale stejně nic |
||
jakubroz Profil |
#9 · Zasláno: 31. 5. 2008, 10:19:08
tak ani copy nejde.
Ale je možné že je to cestou k adresáři. Já mam index. ostatní do toho includuju. Takže třeba tahle je odkaz ?str=neco , ted sem udělal hezké url takže je tam form action na profil-zpracuj/ (místo ?str=profil-zpracuj) a ten adresář data je v rootu. |
||
potom Profil |
#10 · Zasláno: 31. 5. 2008, 10:19:25 · Upravil/a: potom
V jednom souboru:
<FORM ACTION="<?php echo $PHP_SELF; ?>" METHOD="post" ENCTYPE="multipart/form-data"> <INPUT TYPE="file" NAME="soubor" SIZE="40"> <INPUT TYPE="submit" NAME="ok" VALUE="Upload"></FORM> <?php $soubor_name = ($_FILES["soubor"]["name"]); $soubor = ($_FILES["soubor"]["tmp_name"]); $ok = ($_POST["ok"]); if ($ok == "Upload" && $soubor_name!=""){ if (move_uploaded_file($soubor, "./fotky/$soubor_name")) {chmod ("./$soubor_name", 0646); echo "<b>Soubor nahrán na server"; } else { echo "<b>Chyba - soubor nebyl nahran</b>"; }}?> |
||
Davex Profil |
#11 · Zasláno: 31. 5. 2008, 10:19:41
Jaký je obsah proměnné $chyba?
|
||
potom Profil |
#12 · Zasláno: 31. 5. 2008, 10:20:47
inkluze:
no vždycky pozici musíš brát ke vztahu k tomu hlavnímu souboru ve kterym je samotný include " "; |
||
jakubroz Profil |
#13 · Zasláno: 31. 5. 2008, 10:23:55
no vždycky pozici musíš brát ke vztahu k tomu hlavnímu souboru ve kterym je samotný include " ";
no to teda nwm, ale i tak to nejde, když jsem dal místo ../data na data |
||
jakubroz Profil |
#14 · Zasláno: 31. 5. 2008, 10:27:22
Davex
tak proměnná chyba vypisuje že je soubor příliš velký(má 8kb) |
||
Davex Profil |
#15 · Zasláno: 31. 5. 2008, 10:34:42
jakubroz
A nebude to tím, že nemáš INPUT obalený FORMem s nastavenou metodou POST? |
||
Jupíí Profil |
#16 · Zasláno: 31. 5. 2008, 10:38:07 · Upravil/a: Jupíí
Udělal takto a pudeto !!
index.php : <html> <body> <form action="login.php" method="POST" enctype="multipart/form-data"> a : <input name=Jmeno size=20><b> b: <input type=file name=Foto accept="image/*", text/plain"><br> <input type=submit value="ok"> </form> </body> </html> login.php : <html> <body> <?php $jmeno = $_POST["jmeno"]; if(filesize($_FILES["Foto"]["tmp_name"])<5000000) { move_uploaded_file ($_FILES["foto"]["tmp_name"], "data/chat/$jmeno.jpg"); } elseif ( $_FILES["foto"]["type"] =="text/plain") { move_uploaded_file($_FILES["foto"]["tmp_name"], "data/chat/$jmeno.txt"); } elseif ( $_FILES["foto"]["type"] =="image/gif") { move_uploaded_file ($_FILES["foto"]["tmp_name"], "data/chat/$jmeno.gif"); } elseif ($_FILES["foto"]["type"] =="image/jpeg") { move_uploaded_file ($_FILES["foto"]["tmp_name"], "data/chat/$jmeno.jpg"); } elseif ($_FILES["foto"]["type"] =="image/jpeg") { move_uploaded_file ($_FILES["foto"]["tmp_name"], "data/chat/$jmeno.jpg"); } elseif(filesize($_FILES["Foto"]["tmp_name"])<5000000) { move_uploaded_file ($_FILES["foto"]["tmp_name"], "data/chat/$jmeno.jpg"); } else { echo 'Soubor je příliš velký nrbo má špatný formát.'; } ?> </body> </html> P.S musíš mít chod na 777 a mít tam složku data a v ní složku chat u nic taky chmod 777 |
||
jakubroz Profil |
#17 · Zasláno: 31. 5. 2008, 10:38:32
mam já posílam víc udajů
<h3>Vytvořit profil</h3> <form action="../profil-zpracuj/" method="post"> <input type="hidden" name="sent" value=""/> <strong>Přezdívka</strong> <br/><input type="text" class="input" name="prezdivka"/> <strong>Věk</strong> <br/><input type="text" class="input" name="vek" /> <strong>Bydliště</strong> <br/><input type="text" class="input" name="bydliste" /> <h4>Kontakt</h4> <strong>ICQ</strong> <br/><input type="text" class="input" name="icq" /> <strong>Skype</strong> <br/><input type="text" class="input" name="skype"/> <strong>Telefon</strong> <br/><input type="text" class="input" name="telefon"/> <h4>O Vás</h4> <strong>Vzdělání</strong> <br/><input type="text" class="input" name="vzdelani" /> <strong>Zaměstnání</strong> <br/><input type="text" class="input" name="zamestnani" /> <strong>Jazyky</strong> <br/><input type="text" class="input" name="jazyky"/> <h4>Postava</h4> <strong>Barva očí</strong> <br/><input type="text" class="input" name="oci" /> <strong>Barva vlasů</strong> <br/><input type="text" class="input" name="vlasy" /> <h4>Závislosti</h4> <strong>Kouření</strong> <br/><input type="text" class="input" name="koureni" /> <strong>Drogy</strong> <br/><input type="text" class="input" name="drogy" /> <strong>Sex</strong> <br/><input type="text" class="input" name="sex"/> <strong>Portrét</strong> <br/><input type="file" name="obrazek"> <input type="submit" name="send" value="Vytvoř profil"/> </form> </div> |
||
Jupíí Profil |
#18 · Zasláno: 31. 5. 2008, 10:40:04 · Upravil/a: Jupíí
To má fungovat jako registrace??? nebo se ti na web bude ulkádat forka i s popisem??
|
||
Jupíí Profil |
#19 · Zasláno: 31. 5. 2008, 10:41:29 · Upravil/a: Jupíí
<input type="file" name="obrazek">
Toto změň na : <input type=file name=Foto accept="image/*", text/plain"><br> A from si dej ještě enctype="multipart/form-data"> ( Chápeš? ) |
||
jakubroz Profil |
#20 · Zasláno: 31. 5. 2008, 10:54:57
Toto změň na :
<input type=file name=Foto accept="image/*", text/plain"><br> to asi ne, musim tam mít name=obrazek ne? jo je to vytvoření profilu-vloží se to do db i s odkazem na fotku |
||
Jupíí Profil |
#21 · Zasláno: 31. 5. 2008, 10:56:22
Tak tam dej : <input type=file name=obrazek accept="image/*", text/plain"><br>
|
||
jakubroz Profil |
#22 · Zasláno: 31. 5. 2008, 10:58:03
tak už nahrává po malé upravě tvojeho koduJupíí
|
||
Jupíí Profil |
#23 · Zasláno: 31. 5. 2008, 11:01:27
ten co sem psal byl ten co používám já.
Rád sem pomohl |
||
jakubroz Profil |
#24 · Zasláno: 31. 5. 2008, 11:35:48
Jupíí
Já moc dik Ale mam tady ted problem s vloženim do db. Jako jméno obrázku mi to vždy bloží "Array" Tady je kod vložení: $obrazek = $_FILES["obrazek"]; if($prezdivka=="" or $vek==""){ // pokud nebylo vyplněno něco z toho, co je povinné, dáme vědět a skript ukončíme echo "Nevyplnil jste všechny povinné údaje!"; }else{ // povinné udaje vyplněny vsechny require "login/db.php"; // pripojime se k databazi $VlozData=mysql_query("INSERT INTO profily (prezdivka,vek,bydliste,obrazek,icq,skype,telefon,vzdelani,zamestnani, jazyky,oci,vlasy,koureni,drogy,sex) VALUES ('$prezdivka', '$vek', '$bydliste', '$obrazek', '$icq', '$skype', '$telefon', '$vzdelani', '$zamestnani', '$jazyky', '$oci', '$vlasy', '$koureni', '$drogy', '$sex')") or die (mysql_error()); |
||
Časová prodleva: 18 dní
|
|||
regy Profil * |
#25 · Zasláno: 18. 6. 2008, 20:06:45
no já to třeba mám udělaný tak, že se mi ty názvy fotek dělají automaticky. Abys to pochopil, mám jednu databázy, kde mám uložený fotky (cesta,id,kategorie). V kategorii je napsaná ta kek terý se to hodí. Vlastně osu to obrázky, který se pak dávaj jako iluastrační ke článku. a když se vkládá nová tak dám příkaz SELECT * FROM fotografie ORDER BY id DESC. a ten mi najde nejvyšší id. To pak zvíšim o jedna a použiju to jako název k tomu dalšímu obrázku a při zapsání do databáze se to jmenuje např 4.jpg a id to má 4 . No a pak mám eště databázi s těma článkama (u tebe db z uživately) a tam se mi to vloží taky.
tady máš jak to vypadá. $nazev_obrazku = mysqli_query($db_spojeni, "SELECT * FROM fotografie ORDER BY id DESC"); //SQL příkaz $cislo = mysqli_fetch_array($nazev_obrazku); ++$cislo['id']; //tady se zvíší nejvyšší id o jedna $cesta = "foto/".$cislo['id'].".jpg"; //a tady se utvoří cesta foto/4.jpg. tam kde chceš vložit cestu do db dáš tu proměnou $cesta. Jinak nemusíš to mít v tý externí db s těma fotkama ale stačí to brát třeba podle id těch uživatelů že si vždycky vytáhneš toho posledního a jeho id svýšíš o 1 a to pak vložíš jako název k následujícímu uživately. snad ti to pomůže ;-)... ps: psal sem to v rychlosti tak neim esli to pochopíš. |
||
Časová prodleva: 1 měsíc
|
|||
Mikiii Profil * |
#26 · Zasláno: 19. 7. 2008, 21:20:14
To regy
použil jsem tvůj kód na vygenerování číselného názvu(trochu jsem si ho upravil).....ale potreboval bych toto: tobe se to ID zvýší o jedna jen tehdy, když máš nejvyšší hodnotu ID v tabulce v databázi, ale šlo by to nějak udělat, když nemam v tabulce v databázi žádnou nejvyššý hodnotu ID??? respektive v té tabulce nemam nic.... nevím, jak s kódem na to....ukládám replay s hry Warcraft 3 na server a jestli bych potreboval, aby se jejich zápis na server zaznamenal do tabulky v databázi.... zde máte kód, jak to zatím vypadá.... <? echo "<form action=\"./rs.php?site=rs_replay_add&upload=ok&nick=$nick\" method=\"post\" enctype=\"multipart/form-data\">"; echo "<input type=\"file\" name=\"soubor\">"; echo "<input type=\"submit\" name=\"ok\" value=\"Upload\">"; $nazev= mysql_query($db_spojeni, "SELECT * FROM replay ORDER BY id DESC"); //SQL příkaz $cislo = mysql_fetch_array($nazev); ++$cislo['id']; $cesta = "".$cislo['id'].".w3g"; $soubor = ($_FILES["soubor"]["tmp_name"]); $ok = ($_POST["ok"]); if ($ok == "Upload" && $cesta!="") { if (move_uploaded_file($soubor, "./replay/$cesta")) { chmod ("./replay/$cesta", 0646); echo "<br />"; echo "Replay <u>$cesta</u> byl úspěšně <br /> nahrán na server<BR>"; } else { echo "<b>Replay se nepodařilo nahrát na server.</b><BR>"; } } echo "</form>"; ?> Díky moc |
||
king26 Profil |
#27 · Zasláno: 20. 7. 2008, 21:33:44 · Upravil/a: king26
tady je na ukazku muj kod na ulozeni obrazku+miniatury+zapsani do DB
if($_FILES['hfoto']['name']!="") { $dir="../gallery/"; $small_dir="small/"; $name_file=str_replace( array("ě","š","č","ř","ž","ý","á","í","é","ů","ú"," ","-",":",",","!","?","{","}","(",")","[","]","'","*","&","^","%","$", "#","@","+",";","`","~","÷","<",">","/","\\","\"","=","%20"), array("e","s","c","r","z","y","a","i","e","u","u","_","_", "_","_","_","_","_","_","_","_","_","_","_","_","_","_","_","_","_","_ ","_","_","_","_","_","_","_","_","_","_","_","_"), $_FILES['hfoto']['name']); $i_files_ch=true; $max_size=2097152; $obr=explode(".",$_FILES['hfoto']['name']); $moznosti=array("1","2","3","4","5","6","7","8","9","0","a","b","c", "d","e","f"); $mista=3; $konec=""; for ($i=0 ;$i<=$mista-1 ;$i++) { $nahoda=rand(0, count($moznosti)-1); $konec.=$moznosti[$nahoda]; } $name_file=$konec."_".$name_file; if($obr['1']==("jpg"||"JPG")) { $i_files_jpg=true; } else { $i_files_jpg=false; } if($_FILES['hfoto']['size']<=$max_size) { $i_files_size=true; } else { $i_files_size=false; } if($i_files_jpg && $i_files_size) { if(move_uploaded_file($_FILES['hfoto']['tmp_name'],$dir.$name_file) ) { $i_files_up=true; chmod($dir.$name_file,0666); } else { $i_files_up=false; } $i_files_ch2=true; } else { $i_files_ch2=false; } if($i_files_up) { if(file_exists($dir.$name_file)) { $i_files_up2=true; } else { $i_files_up2=false; } } else { $i_files_up2=false; $i_files_up=false; } if($i_files_ch2 && $i_files_up && $i_files_up2) { $image=getimagesize($dir.$name_file); $width=$image['0']; $height=$image['1']; if($width>$height) { $a=true; } else { $a=false; } if($a) { $new_width=190; $ko=$width/$new_width; $new_height=Ceil($height/$ko); } else { $new_height=190; $ko=$height/$new_height; $new_width=Ceil($width/$ko); } if($new_width!=0 || $new_height!=0) { $co = $dir.$name_file; $co2 = "small_".$name_file; $img_zdroj = ImageCreateFromJPEG($co); $img_cil = imagecreatetruecolor($new_width,$new_height) or die(); imagecopyresampled($img_cil,$img_zdroj,0,0,0,0,$new_width,$new_hei ght,ImageSX($img_zdroj),ImageSY($img_zdroj)); // zmensi obrazek ImageJPEG($img_cil,$dir.$small_dir.$co2); chmod($dir.$co2,0666); ImageDestroy($img_zdroj); ImageDestroy($img_cil); if(file_exists($dir.$small_dir.$co2)) { $i_files_exist=true; } else { $i_files_exist=false; } } else { $i_files_exist=false; } } else { $i_files_exist=false; } } else { $i_files_exist=false; $i_files_ch=false; } if($_POST['jmeno']!="") { $i_name_ch=true; } else { $i_name_ch=false; } if($i_files_ch && $i_files_exist && $i_name_ch) { $sql = "insert into gallery (name,hfoto) values ('$_POST[jmeno]','$name_file')"; $result = mysql_query($sql); if (!$result) { $post=0; } else { $post=1; } } else { $post=0; } header("Location: index.php?page=$_GET[page]&m=$_GET[m]&post=$post&name=$name_file"); |
||
regy Profil * |
#28 · Zasláno: 21. 7. 2008, 10:22:26
použil jsem tvůj kód na vygenerování číselného názvu(trochu jsem si ho upravil).....ale potreboval bych toto:
tobe se to ID zvýší o jedna jen tehdy, když máš nejvyšší hodnotu ID v tabulce v databázi, ale šlo by to nějak udělat, když nemam v tabulce v databázi žádnou nejvyššý hodnotu ID??? respektive v té tabulce nemam nic.... nevím, jak s kódem na to....ukládám replay s hry Warcraft 3 na server a jestli bych potreboval, aby se jejich zápis na server zaznamenal do tabulky v databázi.... No podle mě by stačila jednoduchá podmínka. Teda jestli jsem pochopil dobře o co ti jde. Nemáš nic v databázi. ale potřebuješ vygenerovat název fotky. No podle m by stačila tato podmínka: $nazev= mysql_query($db_spojeni, "SELECT * FROM replay ORDER BY id DESC"); //SQL příkaz $cislo = mysql_fetch_array($nazev); if($cislo['id'] == "") $cislo['id'] = 0; ++$cislo['id']; $cesta = "".$cislo['id'].".w3g"; Takhle by to asi fungovalo. Prostě pokud je to první fotka a není tedy od čeho odvodit název, tak to přiřadí fotce jméno 1.w3g |
||
Radim24 Profil * |
#29 · Zasláno: 22. 7. 2008, 22:02:57
Chci se zeptat co znamená to - UPLOAD_ERR_INI_SIZE ... proměnná to není, funkce taky ne?
|
||
Radim24 Profil * |
#30 · Zasláno: 22. 7. 2008, 22:41:19
Tak jsem si přečetl článek o uploadu fotek od pana Vrány a mám dotaz. Co když bych chtěl nahrát více souborů... Dá se zvolit složka a na základě názvu složky třeba vygenerovat nějaký formulář, kde budou obsaženy všechny soubory složky, nebo jak se to dělá...
|
||
Téma pokračuje na další straně.
|
0