« 1 2 »
Autor Zpráva
jakubroz
Profil
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
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
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
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
jakubroz
Ano. CHMOD toho adresář na 777.
Matty
Profil
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
Funkce move_uploaded_file nemusí fungovat všude
jakubroz
Profil
jo funkcí copy to určitě nenahradim.
mě na hostingu normálně jde move_uploaded_file
Chmod jsem nastavil, ale stejně nic
jakubroz
Profil
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
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
Jaký je obsah proměnné $chyba?
potom
Profil
inkluze:

no vždycky pozici musíš brát ke vztahu k tomu hlavnímu souboru ve kterym je samotný include " ";
jakubroz
Profil
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
Davex
tak proměnná chyba vypisuje že je soubor příliš velký(má 8kb)
Davex
Profil
jakubroz
A nebude to tím, že nemáš INPUT obalený FORMem s nastavenou metodou POST?
Jupíí
Profil
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
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
To má fungovat jako registrace??? nebo se ti na web bude ulkádat forka i s popisem??
Jupíí
Profil
<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
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
Tak tam dej : <input type=file name=obrazek accept="image/*", text/plain"><br>
jakubroz
Profil
tak už nahrává po malé upravě tvojeho koduJupíí
Jupíí
Profil
ten co sem psal byl ten co používám já.
Rád sem pomohl
jakubroz
Profil
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());
regy
Profil *
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íš.
Mikiii
Profil *
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
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 *
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 *
Chci se zeptat co znamená to - UPLOAD_ERR_INI_SIZE ... proměnná to není, funkce taky ne?
Radim24
Profil *
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á...
« 1 2 »

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: