Jump to content
GSForum - Segélyvonal

Upload


web
 Share

Recommended Posts

web

Sziasztok!

Egy olyan gondom lenne, hogy van ez a forráskód ami feltölti a képket a szerverre:

<?php
if (isset($_POST['kepek'])){
$size = $_FILES['userfile']['size'];
$type = $_FILES['userfile']['type'];
if ($size < 200000){
if (($type == "image/jpg") or ($type == "image/gif")){
move_uploaded_file($_FILES['userfile']['tmp_name'], getcwd().'/images/'.$_FILES['userfile']['name']);
echo "Rendben! A kép kódja:<br><img scr='images/".$_FILES['userfile']['name']."' align='center' > <img scr='/images/".$_FILES['userfile']['name']."' align='center' >";}
else {
echo "Nem megengedett fileformátum! (Csak gif, jpg kép!)";
}
}
else {
$size = $size/1024;
echo "Túl nagy a file! (".$size." KB, max. 200 KB)";
}
}
?>

 

Na de én szeretném limitálni, hogy mekkora méretû képet lehessen feltölteni, de azt hogyan kell megadni benne?

Elõre is köszi!

Link to comment
Share on other sites

arpsoft

Kérésedre átszerkesztettem!

Link to comment
Share on other sites

  • 6 months later...
csabanova

Sziasztok!!

Nekem is volna egy feltöltéses problémám. Remélem tudtok segíteni, mert én már minden ötletből kimerültem és fogalmam sincs, hogy mit kéne csinálni?

Szóval itt az upload.php :

 

<?

$emberneve = $_POST['emberneve'];
$lista="feltoltott/";
$cel = "feltoltott/";
chmod("feltoltott/", 777);

if (empty($emberneve))
  {echo "<hr><center><b>adj meg nevet</b></center><hr>";}
else 
  {

  $cel2 = $cel . $emberneve ."_". $_FILES['feltoltendofile']['name']; 
  $cel = $cel . $_FILES['feltoltendofile']['name']; 
     
  if(move_uploaded_file($_FILES['feltoltendofile']['tmp_name'], $cel)) 
    {
    echo "<hr><center>File ilyen névvel: <b>".$_FILES['feltoltendofile']['name']."</b> feltöltődött és átnevezésre került ilyen névre:<b>".$emberneve ."_". $_FILES['feltoltendofile']['name']."</b></center><hr>";
    } 
  else
    {
    echo "<hr><center>File ilyen névvel: <b>".$_FILES['feltoltendofile']['name']."</b> nem töltődött fel</center><hr>";
    }
  
  $fmegnyit = fopen($cel , 'r');
  rename($cel , $cel2);
  fclose($fmegnyit);
  }

$dolgozz =  opendir ( $lista );
while ($fileok = readdir($dolgozz)) 
if ($fileok != "." && $fileok != "..")
  {
  $filetomb[] = $fileok;
  }
closedir( $dolgozz );

$fn = count ($filetomb);
$x = 0;
while ($x < $fn)
  {
  echo "<a href=\"".$lista.$filetomb[$x]."\">".$filetomb[$x]."</a><br>";
  ++$x;
  }

?>

na ez az uploads az én gépemen remekül működik, szépen fel tölti a dolgokat. Viszont ha más próbálkozik akkor ezt a hibaüzenetet írja ki :

Warning: fopen() [function.fopen]: Unable to access feltoltott/Szeged 2005.03.12.jpg in /nfs/extra/o/os/osztalyfonok_gi/wwwroot/osztaly/upload.php on line 25

 

Warning: fopen(feltoltott/Szeged 2005.03.12.jpg) [function.fopen]: failed to open stream: Permission denied in /nfs/extra/o/os/osztalyfonok_gi/wwwroot/osztaly/upload.php on line 25

 

Warning: rename(feltoltott/Szeged 2005.03.12.jpg,feltoltott/PeeT_Szeged 2005.03.12.jpg) [function.rename]: No such file or directory in /nfs/extra/o/os/osztalyfonok_gi/wwwroot/osztaly/upload.php on line 26

 

Warning: fclose(): supplied argument is not a valid stream resource in /nfs/extra/o/os/osztalyfonok_gi/wwwroot/osztaly/upload.php on line 27

 

Tudtok nekem segíteni??? PLS nagyon megköszönném (ja az uploadsban van egy ilyen név átnevezési csavar is, de azt gondolom észrevettétek)

Előre is köszönöm csabanova

Link to comment
Share on other sites

arpsoft

A szkriptedet a többiek a Te gépeden futtatják vagy egy külsõ szerverre van feltöltve?

Link to comment
Share on other sites

csabanova

A külsőre van feltöltve. arra is gondoltam, hogy a szolgáltató szúr ki velem valami tiltással, de azt nem hiszem.

Link to comment
Share on other sites

arpsoft

De. Általában a fájlkezelõ mûveletek le vannak tiltva. Ilyen pl az fopen is.

Link to comment
Share on other sites

csabanova

Igen, igen, de ha engedélyezem, úgy hogy átírom a jogosultságát 777-re akkor elvileg mindent lehet vele. Vagy ez nem ettől függ? Amúgy az a legérdekesebb (legidegesítőbb :mérges: ), hogy az én gépemen minden működik szépen, de a többieknél azt a hibaüzenetet írja ki...

Link to comment
Share on other sites

arpsoft

Annak semmi köze ehhez, hogy a fájloknak milyen jogosultságokat adsz. Ez a PHP beállítása, nem a fájlrendszeré. Maga a függvény van letiltva, nem hajtja végre a PHP szerver.

Link to comment
Share on other sites

csabanova

:S:(:Sír:

 

És te látsz rá valami megoldást? :ötlet: Mert szomorú lennék ha nem működne. :Sír: :Sír:

Link to comment
Share on other sites

Mezofi

Esetleg, ha elmondanád mit is akarsz, vagy mi az ameddig eljutottál, ami még mûködik.

Mert ha a feltöltés nem megy a szerverre, akkor abban segítünk, ha az attribútum módosítás nem megy akkor abban. De amit ide beraktál abból nem igazán tudok sokat leszûrni.

Az is jó lenne, ha a netes címet adnád meg ahol tesztelted.

 

Link to comment
Share on other sites

csabanova

www.osztalyfonok_gi.extra.hu címen megnézhetitek, a feltöltés alatt. (Akár az én nevemen is lehet próbafeltölteni: Rákász Csaba) És a kérdésesem még mindig ugyanaz, hogy lehet hogy én fel tudok tölteni, viszont mások nem, vagy csak néha, de legtöbbször azt a hibaüzenetett rakja ki... És hogy lehet ezt megoldani?

Link to comment
Share on other sites

Mezofi

Ahogy arpsoft mondta a legtöbb szerveren vannak letiltott függvények, ezek terén élen jár az extra.hu, ahol szerintem a függvények 70%-át letiltották, éppen azért, hogy fizess és használhatod őket.

 

Egyébként az ékezetes fájlnevek nagyon nem tesznek jót. A feltöltött fájl neve elé fűzöd a neved ékezettel, és a név közti üres hellyel. Az IE sem igazán találja meg az ékezetes oldalakat. Erre ki kellene találnod valami más megkülönbeztetést. Amikor feltölti a képet ott is más nevet kellen adni, mert lehet csupa ékezetes betükből áll a kép neve, és esetleg ezért nem talája a függvény. De ajánlom, hogy próbáld ki más ingyenes szerveren is.

 

Egyébként ez valami újítás?

<html>
<body bgcolor="black"><br><br><br><br><br><br>
  <form enctype="multipart/form-data" action="upload.php" method="POST">
    <form name="myform" action="http://www.mydomain.com/myformhandler.cgi" method="POST">
<div align="center">

És a végén egy </form>-mal lezárjuk a kettőt?

 

Ha az igazi cél az upload.php akkor így kellene:

<html>
<body bgcolor="black"><br/><br/><br/><br/><br/><br/>
  <form name="myform" enctype="multipart/form-data" action="upload.php" method="post">
<div align="center">

Link to comment
Share on other sites

csabanova

1.: Köszönöm a javításokat, a gördülő menünél, átírtam ;)

 

2.: Ismerem ezen problémáját az IE-nek, és gondoltam is hogy ékezet nélkül írom, de aztán eszembe jutott, hogy mennyire nem szeretem az IE-t, ezért már pusztán tüntetés szerűen is, de ékezettel írom. 8):lol:

 

3.: Igen, sejtettem én, hogy az extra tol ki velem és azért nem megy, csak akkor azt nem értem, hogy hogy lehetséges, hogy én tudok feltölteni ( :!: ) viszont más nem, ez számomra felfoghatatlan, na de mindegy.

 

4.: Csak hogy arpsoftot idézzem: "Ha egy problémát nem lehet megoldani, akkor meg kell kerülni..." Ezt a problémát nem lehet megkerülni valahogy?

 

Amúgy már így is köszönöm a segítséget :D

Link to comment
Share on other sites

level

Extrán nincs letiltva a fájlfeltöltés. Ezt abból gondolom, hogy nekem simán működik. Tehát máshol van a probléma. Ja, és a fopen() is megy nálam. Szerintem ellenőrizd az elérési útvonalakat, vagy próbáld meg először csak átnevezés nélkül feltölteni, hogy úgy is rossz-e.

Link to comment
Share on other sites

csabanova

Helló Level!

 

Nem tudnád megmutatni nekem a kódját annak a php-nak (gondolom), ami működik neked, hátha attól okosabb leszek. Esetleg el tudnád küldeni emailban: csabanova@vipmail.hu?

Nagyon megköszönném! :D

Link to comment
Share on other sites

level

Tessék, itt van a szkript.

A fájlokat a "feltoltesek" mappába töltöm fel, és ebben a mappában található a "fajlfeltoltes.php" is, aminek a tartalma:

 

<?php

//ha nem lépett be, akkor a belépés oldalra irányítjuk (csak regisztrált felhasználók tölthetnek fel)
if (!isset ($_COOKIE["belepve"]))
{
   header("location: ../felhasznalok/belepes.php");
}

if (isset ($_FILES['feltoltes']))   // ezt az ûrlap kitöltése után írja ki
{
  $fajl_neve = $_FILES['feltoltes']['tmp_name'];
  $cel = $_FILES['feltoltes']['name'];
  
  move_uploaded_file ($fajl_neve, $cel)           //feltölti a fájlt
      or die ("A fájlt nem lehet feltölteni.");
  
  echo "A fájl elérési útvonala: ../feltoltesek/$cel.";
  
  echo "Feltöltött fájl mérete: " . $_FILES['feltoltes']['size'] . "byte <br />";
    
}
else // ha még nem töltötte ki az ûrlapot
{
?>
<HTML>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-2" >
</head>

<body>


<form enctype = "multipart/form-data" action = "<?php $_SERVER['PHP_SELF'] ?>" method = "post">
   Fájl kiválasztása:<br />
  <input type = "file" name = "feltoltes" style = "width: 800px;" /><br /><br>
  <input type = "hidden" name = "MAX_FILE_SIZE" value = "5242880" />
  <input type = "submit" value = "Feltöltés" />
</form>

<?php
}
?>


</body>
</html>

 

(Megj.: a HTML tag azért csak az else után kezdõdik, mert ha az oldal tetejére teszem, akkor nem tudja a felhasználókat a belépés oldalra irányítani.)

 

Nekem egyébként nem megy a szkript saját gépen, mert nincs virtuális könyvtáram vagy mi a szösz, ami kell hozzá. De ha feltöltöm Extrára, akkor mûködik.

Link to comment
Share on other sites

level

Tudod mit? Szerintem a fájlok feltöltődnek. Nézd meg Total Commanderben vagy valami másban a célkönyvtárat, ott vannak-e a fájlok? Mert van egy ilyen sorod:

 

echo "<hr><center>File ilyen névvel: <b>".$_FILES['feltoltendofile']['name']."</b> nem töltődött fel</center><hr>";

 

de ilyen hibaüzenetet nem kapsz.

Hanem az átnevezéssel lesz a gond. Valami miatt a fopen() nem stimmel neki, és mivel nem tudja megnyitni, ezért a rename() és a fclose() sem kerül végrehajtásra.

Két tipp:

- próbálj meg így: @fopen(), @rename(), @fclose(); néha csak ennyi kell neki, mert van, hogy minden működik rendesen, csak nem tudom miért mégis hibaüzeneteket ad

- esetleg próbáld ki ezt a sorrendet: fopen, fclose, rename.

Link to comment
Share on other sites

csabanova

Átírtam amiket mondtál:

 

$fmegnyit = @fopen($cel , 'r');

@fclose($fmegnyit);

@rename($cel , $cel2);

 

Nem működött továbbra sem, viszont már nem a hibaüzenetet írja ki, hanem, hogy: "a file ilyen névvel nem töltődött fel."

Ez is eredmény! :D

Link to comment
Share on other sites

level

Próbálgattam kicsit a szkriptedet a saját extra tárhelyemen, és úgy tûnik, megszületett a megoldás. :D

A könyvtár attribútumát az ftp-kliensben változtasd meg 777-re, és töröld ezt a sort:

 

chmod("feltoltott/", 777);

 

Amíg ez a sor ott volt, addig nekem mindig átugrott az attribútum valami másra, hiába állítottam be Total Commanderben 777-re.

 

A fopen() stb. részt pedig inkább írd vissza olyanra, amilyen eredetileg volt, mert az mûködik. :upsz:

Link to comment
Share on other sites

csabanova

Rossz hírek! :(:mérges::dühös:

 

Megcsináltam amit mondtál és először ugyanazt a hibaüzenetet dobta ki mint amit az elején mondtam, aztán visszaírtam az fopen eket @-cal és akkor meg ismét a "a fájl ilyen névvel nem töltődött fel" szöveg jött elő. :(

 

Amúgy cseles, mert a feltöltés nálam már a kezdetek óta működik, csak másoknál nem, ezt nem is értem. Sajnos nálam, nem jött be a "chmod("feltoltott/", 777);" sor kitörlése, nem megy. :mérges: Amúgy ezen a címen te is kipróbálhatod, hogy működik-e nálad, Rákász Csaba néven feltölthetsz, csak ne valami pornót :P:D , barátnőm is nézi a honlapot. :D

Link to comment
Share on other sites

level

Akkor nem értem mi van. Feltettem a szkriptedet a honlapomra, gyökérkönyvtárba, és létrehoztam ott egy feltoltott nevű mappát, mert úgy gondoltam, hogy nálad is ilyen az upload.php és a feltoltott mappa egymáshoz való viszonya a könyvtárstruktúrában. És azzal a változtatással, amit leírtam, működött. Nézd meg: Link (a gomb melletti üres sorba kell az ember nevét beírni, csak azt már nem írtam oda).

Ja igen, még egyet változtattam rajta: if (move_uploaded_file(stb.)== TRUE) de ennek nem kéne számítania, csak én így jobban szeretem. De ha gondolod, írd be a TRUE-t, hátha.

A link, amit megadtál, nálam nem megy, nem jön be az extra erroros oldal sem, csak a böngészős hibaüzenet, hogy nem találja az oldalt.

 

Szerk.: most hogy nézem, a saját linkem se jön be innen... de ha utána újból rákeresek, akkor már bejön. Remélem, neked sikerül. Nem értem...

 

Figyelj, ellenőrizted Total Commanderben is, hogy ott vannak-e a feltöltött fájlok? Az újakat nem jelzi ki, csak később. De amiket régebben próbálgattál, azokat kimutatja, ha feltöltődtek. Mert lehet, hogy a feltöltés megtörténik, csak valami más miatt adja mégis a hibaüzenetet. Nekem is volt olyan, hogy azt írta ki, nem lehet elmenteni a hozzászólást a fórumomban, de utána a hozzászólás mégis ott volt, más okozta a hibát.

Link to comment
Share on other sites

csabanova

Na mindegy, átraktam egy másik szolgátatóhoz és ott elvileg gond nélkül működik. Nem szórakozok az extrával, és nem is igazán értem hogy mi lehet a baj. Most FW-n van. Viszont azt nem tudom, ez az ami soha nem sikerült, hogy hogy lehet hivatkozni az uploadban, hogy ne az fw-re, hanem az extrára töltse fel, pedig az upload az fw-n van.

Link to comment
Share on other sites

level

Hát, olyat szerintem nem tudsz, mert ha azt szabad lenne, akkor bárki bárkinek az oldalára feltölthetne dolgokat...

 

Inkább azt javasolnám, próbálj meg újra regisztrálni az extrán, és költöztesd át oda az egészet (vagy pedig a FW-re, bár ki tudja jobb-e mint az extra...), mert a mostani honlapoddal valami gond van. Tudom, hogy már korábban is belinkelted, de akkor sem tudtam belépni, és azóta sem tudok, mert "a kiszolgáló nem található".

Link to comment
Share on other sites

csabanova

Ezt nem is értem, hogy a "kiszolgáló nem található" :pislog::pislog: Én naponta nézem, most is. Nem értem???

Ja amúgy átraktam az FWre és frankón működik, csak az a baj, hogy, bár az FW-n 500 MB tárhely van, de meghatározzák, hogy miből mennyi lehet fent (képek azt hiszem 20 MB). Halkan jegyzem meg, hogy ha ezeket összeadom, messze nincs meg az 500 MB, szóval ennyit erről, nem hiszem hogy HTML meg PHP oldalakkal meg tudnám tölteni... :lol: Még megpróbálok egy másik extrát is reggelni... Kösz a segítséget!

 

Ja igen, arról nem tudsz valamit, hogy ha nagy fájlt töltök fel (pl.: 14 MB), ergo eltart egy ideig, akkor mért hiszi azt egy idő után, hogy nem választottam ki a nevet, ezért kiírja az "adjál nevet" hibaüzenetet. Valami session hiba nem?

Link to comment
Share on other sites

level

Uhh, azt sajnos nem tudom de hátha van itt valaki okosabb, aki tudja... :hááát:

 

A honlapoddal különben folyamatosan próbálkozok, de még egyszer sem sikerült. Esetleg arra tudok gondolni, hogy nem Magyarországról internetezem (a FW annakidején nem is engedett regisztrálni emiatt...), na de hát a sajátomat is innen nézem, és az bejön. :pislog:

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...