Segédletek.hu
Segédletek weblap szerkesztéshez!
Fórum:
Postaláda:
Szavazás:
Hány éves vagy?
Segédletek:
Linkek:
Kép feltöltése szerverre phpvel:
Ebben a segédletben bemutatom, hogy hogy kell egy képet a szerverre feltölteni.
Mindössze egy fájlra lesz szükségünk, és egy mappára 777 jogokkal.(TotalCommander => fájl => attribútumok módosítása => 777)
Ezzel a kis scripttel csak képet tudunk a szerverre feltölteni, de könnyen módoítható akármilyen fájlformátumra is.
Akkor kezdjünk bele.
Nálam a fájl neve feltolt.php , és a könyvtár neve kepek. Fontos, hogy 777 joga legyen, és egy könyvtárban legyenek.
működő demó
feltolt.php
Ebben nincs semi érdekesség, kiírattunk egy formot, amely alkalmas a fájl kiválasztására. a enctype="multipart/form-data" résszel jelezzük, hogy fájlt fogunk feltölteni.
Most jöjjön az érdekesebb rész, a feldolgozása. Minden feltöltött fájl a $_FILES szuperglobális tömbben kap helyet. jelen esetben a képünk a $_FILES['kep'] változóban van benne. ez is egy tömb. értékei:
$_FILES['kep']['name'] - A kép eredeti neve
$_FILES['kep']['type'] - A kép mime típusa (formátuma) pl: "image/gif"
$_FILES['kep']['size'] - A kép mérete bájtokban megadva
$_FILES['kep']['tmp_name'] - Egy ideiglenes állomány, a szerver ide tölti fel.
$_FILES['kep']['error'] - A feltöltés során keletkezett esetleges hiba kódja
Most, hogy ezt mindet tudjuk, dolgozzuk fel a képet.
Ez egy függvény, amelyik ellenőrzi a kép méretét, formátumát. a $max változóban van a kép maximum mérete, a $formats tömbben az engedélyezett típusok. Jelen esetben a képek csak.
Menjünk tovább
a $dir változóban van a feltöltési útvonal.
Ha elküldték a formot, ellenőrizzük a képet, ha átmegy a teszten, áthelyezzük a kepek mappába. Ez: md5(date("h-m-s")) ne tévesszen meg senkit, azért van, hogy a képek neve egyedi legyen. akár máshogy is megoldhatjuk, bármi más nevet is adhatunk feltöltött képeinknek.
Ezzel a segédlet végére is értünk. A következő egy képgaléria lesz, ennek alapján.
A segédletben felhasznált php függvények:
foreach()
isset()
move_uploaded_file()
Ezzel a kis scripttel csak képet tudunk a szerverre feltölteni, de könnyen módoítható akármilyen fájlformátumra is.
Akkor kezdjünk bele.
Nálam a fájl neve feltolt.php , és a könyvtár neve kepek. Fontos, hogy 777 joga legyen, és egy könyvtárban legyenek.
működő demó
feltolt.php
<html>
<head>
<title>Kép feltöltés</title>
</head>
<body>
<form method="post" action="" enctype="multipart/form-data">
<table>
<tr>
<td>Feltöltés</td>
<td><input type="file" name="kep" /></td>
</tr>
<tr>
<td colspan="2"><input type="submit" value="feltöltés" name="feltolt" /></td>
</tr>
</table>
</form>
Ebben nincs semi érdekesség, kiírattunk egy formot, amely alkalmas a fájl kiválasztására. a enctype="multipart/form-data" résszel jelezzük, hogy fájlt fogunk feltölteni.
Most jöjjön az érdekesebb rész, a feldolgozása. Minden feltöltött fájl a $_FILES szuperglobális tömbben kap helyet. jelen esetben a képünk a $_FILES['kep'] változóban van benne. ez is egy tömb. értékei:
$_FILES['kep']['name'] - A kép eredeti neve
$_FILES['kep']['type'] - A kép mime típusa (formátuma) pl: "image/gif"
$_FILES['kep']['size'] - A kép mérete bájtokban megadva
$_FILES['kep']['tmp_name'] - Egy ideiglenes állomány, a szerver ide tölti fel.
$_FILES['kep']['error'] - A feltöltés során keletkezett esetleges hiba kódja
Most, hogy ezt mindet tudjuk, dolgozzuk fel a képet.
<?php
function check($kep)
{
$max = 256000;
$formats = array("image/jpeg","image/jpg","image/gif");
foreach ($formats as $format)
{
if ($format == $kep['type'])
{
$helyes = true;
break;
}
}
if($kep['size'] > $max)//250KB)
{
return "Túl nagy a kép. A maximális méret: ".$max/1024 ."KB";
break;
}
elseif($helyes !== true)
{
return "Hibás formátum";
break;
}
else
{
return "rendben";
}
}
Ez egy függvény, amelyik ellenőrzi a kép méretét, formátumát. a $max változóban van a kép maximum mérete, a $formats tömbben az engedélyezett típusok. Jelen esetben a képek csak.
Menjünk tovább
$dir = "./kepek/";
if (isset($_POST['feltolt']))
{
if(check($_FILES['kep']) == "rendben")
{
if(move_uploaded_file($_FILES['kep']['tmp_name'],
$dir.md5(date("h-m-s")).$_FILES['kep']['name']))
{
print "sikeres feltöltés";
}
}
else
{
print "Hiba: ".check($_FILES['kep']);
}
}
?>
</body>
</html>
a $dir változóban van a feltöltési útvonal.
Ha elküldték a formot, ellenőrizzük a képet, ha átmegy a teszten, áthelyezzük a kepek mappába. Ez: md5(date("h-m-s")) ne tévesszen meg senkit, azért van, hogy a képek neve egyedi legyen. akár máshogy is megoldhatjuk, bármi más nevet is adhatunk feltöltött képeinknek.
Ezzel a segédlet végére is értünk. A következő egy képgaléria lesz, ennek alapján.
A segédletben felhasznált php függvények:
foreach()
isset()
move_uploaded_file()
Írta: requiem - 2006-07-06 22:35:42
* Nem vagy bejelentkezve!* Nem töltheted le a segédlet forrását egyben!
* Nem szavazhatsz a segédletre!
* Nem írhatsz a segédlethez tartozó fórum témába!
| dexter | 2010-01-17 17:50:51 |
| megoldodott közben megtudtam csinálni de azért köszi:) | |
| dexter | 2010-01-17 17:29:28 |
| Hello!nem akar m?ködni:S mondjuk egy nagyon kezd? vagyok lenne néhány kérdésem: 1.chmod(0777,$fajl_neve); ezt pontossan meik sor után adom meg? 2.(TotalCommander => fájl => attribútumok módosítása => 777 <-ilyenem nincs:S 3.az elérési utat h adom meg pontossan?xamppot használok... és az alatta levö "virtuális serverre" megoldhato e ez? és ha igen akkor az elérési utat mennyire pontossan kell lebontani?válaszod elöre is köszi |
|
| debetu | 2009-01-23 23:38:39 |
| köszi szépen, kicsit finomítottam rajta, és így már tökéletes. | |
| 4444 | 2007-10-13 16:45:18 |
| egy kis tökölődéssel sikerült meg csinálni :D köszönöm!!! | |
| 4444 | 2007-10-13 15:31:36 |
| nekem még azt se írja ki hogy a feltöltés sikeres csak frissül a lap és nem történik semmi | |
| 4444 | 2007-10-13 15:30:36 |
| nekem se működik :(:(:( | |
| requiem | 2007-08-22 21:40:43 |
| chmod(0777,$fajl_neve); Ezt tedd bele feltöltés után egyből. |
|
| csimpee | 2007-08-12 01:57:55 |
| nekem valamiért nem megy kiírja hogy a feltöltés sikeres de nem látom a képet se a megeadott könyvtárban sem az általam írt képtárban valaki help pls | |

