ugrás a tartalomhoz

Van valakinek működő képfeltöltő szkriptje?

mikieger · 2007. Már. 3. (Szo), 19.17
Tisztekt profik újra!

Az előzőből elfelejtettem megkérdezni még, hogy egy működő képfeltöltő szkriptje van valakinek? Mellékelve hogy milyen beállítások javasoltak a sikeres képfeltöltés érdekében. Csak mert már letöltöttem egy ilyen forráskódot, de amikor fel akartam tölteni, azt írta ki hogy Hibás formátum.

Előre is köszi.
 
1

Mit szeretnél?

janoszen · 2007. Már. 4. (V), 09.48
Figyu, erre a kérdésre egyáltalán nem lehet válaszolni. Milyen beállítások? Milyen képfeltöltő scriptet töltöttél le honnan? Mi írja azt, hogy hibás formátum?

Jó lenne, ha egy kicsit pontosabban fogalmaznál, mert annak semmi értelme, hogy fussuk a fölösleges köröket, amíg kitaláljuk, hogy mit is szeretnél pontosan. Erőteljesen ajánlom elolvasásra ezt: http://esr.fsf.hu/smart-questions_hu.html

Nem bántani szeretnélek, csak semmi értelme, hogy olyasmire adjunk megoldást, amit Te nem is akarsz...
2

képfeltöltő

mikieger · 2007. Már. 4. (V), 18.05
Hi, igazad van, normálisabban kellett volna körülírni, mit is szeretnék.

Remélem az alábbi forráskóddal már közelebb jutunk a megoldáshoz. Ezt töltöttem le, meg talán egyszer már láttam itt a fórumtémák között is.
Tehát a probléma ugyanaz: Hibás formátum.-ot ír ki és a kép nem kerül a kódban meghatározott kepek mappába. A kepek mappát pedig ugyanabban a könyvtárba raktam, mint ezt a php állományt.
A választ előre is köszi...


A forráskód pedig a következő:
<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>
<?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";
}
}
$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
3

jó ez

virág · 2007. Már. 5. (H), 07.48
Működik ez, csak a könyvtár nevét javítsd át, ha ugyanott van, ahol a .php fájl:

$dir = "kepek/";

(move_uploaded_file() fgv. helyett én a jó öreg copy-t ajánlanám, de ízlés kérdése)

Ha valami nem megy, akkor érdemes picit gyakorolni, keresni a hibát és nem azonnal fórumozgatni. Nem rosszból, de szerintem fél óra olvasgatás és próbálkozás után megértetted volna. Plusz:

http://hu.php.net/manual/hu/function.move-uploaded-file.php itt van egy csomó működő példa és ötlet. :)
4

copy

Hojtsy Gábor · 2007. Már. 5. (H), 09.36
move_uploaded_file() helyett semmiképpen nem ajánlanám a jó öreg copy()-t, és ez nem ízlés, hanem biztonság kérdése.
5

is_uploaded_file + copy

vbence · 2007. Már. 5. (H), 11.49
Az is_uploaded_file-lal kombinálva a copy (+unlink) jó megoldás. Különösen, hogy a move függvények hibásak egyes php verziókban.
9

open_basedir

Hojtsy Gábor · 2007. Már. 6. (K), 15.51
Pedig ha felrakja egy ingyenes szerverre, ahol jellemzően open_basedir megkötés van, és megesik, hogy nem azon belül van a feltöltés könyvtára, akkor nem fog neki menni a copy, egy szép open_basedir hibát fog dobni.

A Drupal ingyenes webhely barátabbá tétele során ez például egy sarkalatos pont volt számunkra.
6

feltöltő

mikieger · 2007. Már. 6. (K), 12.16
Átjavítottam a könyvtár nevét, ahogy írtad, de még így sem megy. Nem tudom mi lehet a baj, de már régót szeretném ha működne. Kérlek írjatok ha valakinek van még ötlete.
Előre is köszi...
7

képfeltöltő

mikieger · 2007. Már. 6. (K), 14.43
Megnéztem az error.log-ot is és a hibaüzenet:
[client 127.0.0.1] PHP Notice: Undefined variable: helyes in C:\web\pro1.php on line 37, referer: http://localhost/pro1.php
Vagyis az elseif feltételénél.
Valaki tudna erre megoldást?
Előre is köszi.
8

in_array

gex · 2007. Már. 6. (K), 15.11
azt jelenti, hogy nem definiáltad a $helyes változót, mivel csak akkor adsz neki értéket, ha jó a kép formátuma. a bonyolult foreach-es megoldásod helyett ajánlom figyelmedbe az in_array() fv-t:

<?php
$helyes = in_array($kep['type'], $formats) ? true : false;
?>
ezt a függvényt egyébként közvetlenül az elsif feltételeként is megadhatod.

szerk: ez az undefined variable egyébként csak akkor jön elő, ha nem jó a kép formátuma, ha jó képet töltesz fel, nem jelentkezik.