mivel csak a kiterjesztést nézi, ezért fel lehet tölteni, viszont nem fog lefutni, mert jpg kiterjesztése van, előnézetnél pedig semmit nem fogsz látni.
Fájlok feltöltése PHP használatával
Írta: lowert | 2009. július 14. | kategóriák: (X)HTML, Alapok, PHPA leírásban azt fogom bemutatni, hogy hogyan lehet elkészíteni egy egyszerű képfeltöltő rendszert PHP-ban. Először is, készítsük el az alábbi mappastruktúrát:

az “upload_files” mappa fogja tárolni a feltöltő rendszert, kód szempontjából mindegy, hogy mi a neve.
Az “uploads” mappa ad helyet a feltöltött fájljainknak, az “upload.php” pedig a rendszer motorjaként szolgál.
Az űrlap (HTML)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | < !DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Fajlok feltoltese php-val</title> </head> <body> <form enctype="multipart/form-data" action="" method="post" /> <input type="hidden" name="MAX_FILE_SIZE" value="3000000" /> <!--a feltöltött file maximális mérete 3mb--> <label for="file"> Válassz egy fájlt!</label><input id="file" type="file" name="file" /> <input type="submit" name="submit" value="Feltöltés!" /> </body> </html> |
Így néz ki:
![]()
PHP kód
Elérkezett az izgalmas rész, mégpedig a PHP kód megírása. A következő kódot illesszük a HTML forrás elejére:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | < ?php if(isset($_POST['submit'])) { //ha megnyomtuk a feltöltés gombot $target= "uploads/"; //célmappa $file_name = $_FILES['file']['name']; //a célfájlt nevezze el a $_FILES superglobal változóban lévo fájlnévre (a fájl eredeti nevére) $tmp_dir = $_FILES['file']['tmp_name']; //az ideiglenes mappa helyét a $tmp_dir változóban tároljuk if(!preg_match('/(gif|jpe?g|png)$/i', $file_name)) //ha a fájlnak ($file_name-nek) a kiterjesztése nem gif, jpg/jpeg, png, akkor... { echo "Rossz fajltipus!"; //... "dobjon el" egy hibát } else { move_uploaded_file($tmp_dir, $target . $file_name); //az ideiglenes mappából átteszi a fájlt a végleges mappába (a $target . $file_name összeilleszti a két stringet, így uploads/fajlnev-et kapunk) $feltoltve = true; //a feltoltve változó true értéket kap } } ?> |
Ahogy látható, lekorlátozzuk a feltölthető fájlokat képekre (gif-re, jpg/jpeg-re, png-re) a preg_match-et használva, tehát ha a fájl végén nem gif, jp(e)g vagy png van, akkor Rossz fájltípusra hivatkozva
meghíusul a feltöltés.
Most pedig vissza kell jeleznünk valamit a felhasználónak, tehát:
1 2 3 4 5 6 | < ?php if($feltoltve) { $utvonal = $target . $file_name; echo "Sikeresen feltöltötted a képet, megnézheted <a href="$utvonal">itt< /a>!"; } ?> |
A végeredmény, ha a fájlt sikerült feltölteni:

A biztos védelem érdeklében ilyen esetben szokták mondani, hogy a GD modul segítségével meg kell próbálni betölteni a képet. Ha hibát dob, akkor nem kép, hanem egy tetszőleges mime típusú átnevezett fájl.
persze, még millió féleképpen lehet növelni a biztonságot, ez csak egy alap szintű leírásnak lett szánva
Szia! A php kód 4. sora nem teljesen érthető számomra, el tudnád mondani, hogy mit kezdjek vele. Pontosan melyik részét kell átírni és mit írjak a helyére. Előre is köszönöm a választ.
Hol tudnék feltölteni PSD fájlt?
Ha valaki tudja akkor erre az e-mail cmire küldje:mucuska90@citromail.hu
Szia!
Remélem tudsz segíteni!
Az egyik oldalba a megfelelő helyre beraktam a html kódot, majd létrehoztam az uploader.php nevű fájlt, és az uploads nevű mappát. Mindet feltöltöttem az oldalhoz.
Tallózok, és feltöltés, de ekkor ezt írja ki:
“The requested method POST is not allowed for the URL /feltolt.html”
mit tudnék tenni, hogy rendesen működjön??? Az egész oldalt htmlben szerkesztem, és php-t most használok először…….:S:S:S
Remélem valakinek lesz egy hasznos hozzászólása!!!!!!!!
Szia!
Próbáld meg úgy, hogy feltolt.html-t átnevezed feltolt.php-ra ![]()
Remélem, mondanom sem kell, hogy ezt fel kell töltened egy szerverre, hogy lefusson.
A feltolt.html az a htmé oldal amiben a feltöltés van…. ahol el tudják érni a feltöltést…. miért cserélném ki feltolt.php-ra ha ilyen fájlom nincs is?
A tárhely nem ingyenes, és én nem állítottam be semmilyen szűrést!!
Hogyan lehet filterezni?
Félreértettél ![]()
Nem kell kicserélned, hanem át kell nevezned. Magyarul megnyitsz egy fájlkezelő programot (például Windows Intéző, Total Commander, Mac Finder stb). A feltolt.html fájlon jobb gombbal kattintasz, így megjelenik a legördülő menü. Kiválasztod az Átnevezés/Rename opciót, majd a feltolt.html-t átírod feltolt.php-ra. Azért nem működik a dolog nálad, mert a feltolt.html egy html file, amin belül nem lehet php kódokat futtatni (mint amilyen ez a feltöltő kód is), a megoldás: php file-ként kell elmenteni a dokumentumot. A php fileok nagyban hasonlítanak a HTML fileokhoz, tehát akármilyen HTML kódot beírhatsz egy .php file-ba, az ugyanúgy fog működni, viszont itt használhatod a php nyelven írt programokat is, mint például ezt a feltöltőt. Arra figyelj, hogy miután átnevezted, az összes olyan oldalban lévő linket át kell írnod, ami az eredeti feltolt.html-re hivatkozik, mostmár a feltolt.php-ra kell, hogy hivatkozzon.
Nekem nem működök a feltöltés meg nem is nagyon értem h mit hova és mi elé kell illesztenem.
Teljesen kezdőnek aki nulla tudással rendelkezik az hogy tudná megcsinálni??
Arra szeretném használni h a valami.fw.hu – n osztálytársaim feltudjanak nekem tölteni képet és akár fájlokat is.
Ha valaki tömörítve elküldené nekem h csak fel kelljen másolnop az ftp-re és utána működne azt nagyon megköszönném:$ én nem tanultam soha ilyet még infóbol sem sem:( sajnos nem is értek hozzá. Úgy gondoltuk ez egyszerübb lenne(ha megtudtam volna csinálni)
Köszönöm és elnézést h ilyen bután kérdezek nálam jóval okosabbaktól erről a témában:(
email címem ha valaki elküldni nekem:$: laki_@freemail.hu
Hali
értelmesnek tűnik a dolog lehet én vok hülye:D
van egykét dolog amit nem értek…
át kéne írnom valamit?
csak mert ha rámegyek hogy feltöltés akkor elkezd tölteni és ki is írja hogy sikeresen feltöltötted, de mégsincs feltöltve semmi
két dolog amit nem is értek benne:
egyik: az ideiglenes mappa helyét a $tmp_dir változóban tároljuk
másik: az ideiglenes mappából átteszi a fájlt a végleges mappába (a $target . $file_name összeilleszti a két stringet, így uploads/fajlnev-et kapunk)
Nemlehet megcsinálni hogy egyböl betegye az uploads mappába? mert aztirja h ideiglenesen… valami:D
valaki segitsen a kezdöknek:)
elöre is köszi
Heló
gyorsan jött a válasz:)
a könyvtárszerkezet alapból megvolt, mert a kód letöltésére mentem, és ott alapból megvolt az is, azon semmit sem változtattam csak simán feltöltöttem
várom a megoldást, elöre is köszi
Igen, peldaul en megneztem 000webhoston, naluk nem lehet feltotleni, de a szunyi-nal peldaul igen. Ha nincs ez engedelyezve, akkor semmilyen hibauzenetet nem ir ki… Te melyik tarhelynel vagy? (remelem tudod, hogy a PHP kodot csak a PHP-val rendelkezo gepek, altalaban szerverek tudjak lefutattni…)
ezt írják az atw oldalán: A munkamenet fájlokat a PHP minden esetben a gyökérkönyvtárad alatti ‘tmp’ könyvtárban tárolja, ezért nincs más dolgod, mint létrehozni azt.
Ez pontosan mit is jelent?
ááá…XD
sikerültXD
annyi lett volna, hogy amit letöltöttem mappaszerkezetet, azt még bele kellett tennem egy “tmp” nevű mappába:D szerintem ennek nemsok értelme van, deh a lényeg h megvan, ami nélkületek nem sikerült volna, mert nem jutott volna eszembe felmenni az atw oldalára és megnézni h mi a baja
szóval köszi szépen srácok… örök hála:)
Csongor:
00webhoston lehet feltölteni
nekem is van ott tárhelyem és tökéletesen feltölt képeket vagy egyebeket, sőt még a GD-t is lehet használni…
Nekem ezt irja:
Notice: Undefined variable: feltoltve in C:\wamp\www\upload_files\upload.php on line 39.
Aki ugyanezt tapasztalja, tegyen egy @ -ot ide:
if(@$feltoltve) {
![]()
Amugy jól müködik, köszönöm!
Ja megvan de így nem fogadja el rossz így:
Fajlok feltoltese php-val
Válassz egy fájlt!
< ?php
if($feltoltve) {
$utvonal = $target . $file_name;
echo "Sikeresen feltöltötted a képet, megnézheted itt!”;
}
?>
Tupacko arra gondolt, hogy keresd meg ezt a sort:
$target = “uploads/” // célmappa
és alatta hozd létre a feltoltve változót, adj neki egy alap értéket.
$feltoltve = false;
Mit nem fogad el? Van hiba üzenet?
Sziasztok!
Kb két hete küszködök már ezzel… ATW weboldalán valamiért nem megy a file feltöltés, hibaüzi nincs, mert azt mondja hogy sikeresen feltöltöttem, még meg is nézhetném, de ekkor jön egy 404-es hibakód…
Válassz egy fájlt!
<?php
if($feltoltve) {
$utvonal = $target . $file_name;
echo "Sikeresen feltöltötted a képet megnézheted <a href=’$utvonal’ rel=”nofollow”>itt</a>!”;
}
?>
ha valaki megtudja nekem mondani hogy ez miért nem jó, annak nagyon hálás lennék.
Köszönöm.





Mi van akkor, ha pl. egy php file-nak adok .jpg kiterjesztést?