ugrás a tartalomhoz

Képkezelés elakadtam

aky22 · 2011. Szep. 28. (Sze), 14.43
Hali! Az a problémám, hogy van egy képfeltöltős formom és nem tölti fel a képeket, mert elvileg nem kapja meg a megfelelő paramétereket a move_uploaded_file. Itt a kód:

	$sex = $_POST['nem'];
	
	//Create mapp
	$ekezetes=$_POST['vezeteknev'].substr($_POST['keresztnev'], 0, 1);
						$mappa=strtolower($ekezetes);
						for ($i=0;$i<strlen($mappa);$i++)
						{
							switch($mappa[$i])
							{
								case 'á':$mappa[$i]='a';break;
								case 'é':$mappa[$i]='e';break;
								case 'í':$mappa[$i]='i';break;
								case 'ó': case 'ö': case 'ő': $mappa[$i]='o';break;
								case 'ú': case 'ü': case 'ű': $mappa[$i]='u';break;
								case ' ':$mappa[$i]='_';break;
							}
						}
						chdir('models/'.$sex);
						if (@mkdir($mappa))
						{
							chdir($mappa);
							@mkdir('small');
						}
						else
						{
							print '<p>A mappa már létezik</p>';	
						}
	//End creat map



	$file1 = $_FILES['file']['name'][0];
	$file2 = $_FILES['file']['name'][1];
	$file3 = $_FILES['file']['name'][2];
	$file4 = $_FILES['file']['name'][3];
	$file5 = $_FILES['file']['name'][4];
	$file6 = $_FILES['file']['name'][5];
	
	$feltoltve=false;
	$target= "models/".$sex."/".$mappa; //célmappa
	$file_name = $file1; //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'][0]; //az ideiglenes mappa helyét a $tmp_dir változóban tároljuk
	 
	if(!preg_match('/(gif|jpe?g|png|bmp)$/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
	}
	if($feltoltve) {
		$utvonal = $target . $file_name;
		echo 'Sikeresen feltöltötted a képet, megnézheted <a href="../'.$utvonal.'">itt</a>!';
	}
Lécci segítsetek mert én mindjárt felakasztom magam :@
 
1

Form

Poetro · 2011. Szep. 28. (Sze), 14.48
És hol van a form? Lehet abban van a hiba.
2

Azt átnéztem de ha tényleg

aky22 · 2011. Szep. 28. (Sze), 14.58
Azt átnéztem de ha tényleg látni akarod akkor itt van :

<label class="cabinet"><label class="finp_label">'.$lang['PHOTO No.1'].'</label><input type="file" name="file[]" class="file" /></label>
						<label class="cabinet"><label class="finp_label">'.$lang['PHOTO No.2'].'</label><input type="file" name="file[]" class="file" /></label>
						<label class="cabinet"><label class="finp_label">'.$lang['PHOTO No.3'].'</label><input type="file" name="file[]" class="file" /></label><br />
						<label class="cabinet"><label class="finp_label">'.$lang['PHOTO No.4'].'</label><input type="file" name="file[]" class="file" /></label>
						<label class="cabinet"><label class="finp_label">'.$lang['PHOTO No.5'].'</label><input type="file" name="file[]" class="file" /></label>
						<label class="cabinet"><label class="finp_label">'.$lang['PHOTO No.6'].'</label><input type="file" name="file[]" class="file" /></label><br />
						<input type="hidden" name="MAX_FILE_SIZE" value="30000" />
csak egy része. A maradék kb. 800 sort kihagynám.
3

Így látatlanba

bb0072 · 2011. Szep. 28. (Sze), 15.13
Ez esetleg?

$file1 = $_FILES['file'][0]['name'];  
$file2 = $_FILES['file'][1]['name'];  
$file3 = $_FILES['file'][2]['name'];  
$file4 = $_FILES['file'][3]['name'];  
$file5 = $_FILES['file'][4]['name'];  
$file6 = $_FILES['file'][5]['name']; 
4

nem jó nem működik :/ Amúgy

aky22 · 2011. Szep. 28. (Sze), 15.16
nem jó nem működik :/ Amúgy bocsi azt el felejtettem mondani, hogy van egy .htaccess fájl ami így néz ki :

<IfModule mod_rewrite.c>
RewriteEngine on
Options +FollowSymLinks
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/(.*) $1.php?rewrite=$2 [QSA]
DirectoryIndex index.php
</IfModule>

Ez szabályozza nekem ,hogy az URL-jeim így nézzenek ki : www.valami.hu/jelentkezes/
7

ez is

bb0072 · 2011. Szep. 28. (Sze), 15.20
Erre a sorra is figyelj:


$tmp_dir = $_FILES['file']['tmp_name'][0];
Szerintem itt sem jó. Azonkívül érdemes lenne egy foreach-al végigmenni a $_FILES['file'] tömbön, és egyenként move-olni. Jelen állapotában nem is igazán értem, hogy mit akar csinálni a kód.
8

Tudom csak tesztelni akartam,

aky22 · 2011. Szep. 28. (Sze), 15.25
Tudom csak tesztelni akartam, hogy egy képet fel tudok e tölteni de nem nagyon akar összejönni :/
5

Általános megoldásként pedig

bb0072 · 2011. Szep. 28. (Sze), 15.17
Általános megoldásként pedig érdemes használni ezt a nagyszerű függvényt: var_dump

Ha sok file-t töltesz föl, akkor nagyon érdemes figyelni a php configban a post_max_size és az upload_max_filesize értékekre. Egyik file sem lehet nagyobb, mint az upload_max_filesize és az egész postolt cucc meg nem lehet nagyobb. mint a post_max_size.
6

var_dump-ot már próbáltam

aky22 · 2011. Szep. 28. (Sze), 15.19
var_dump-ot már próbáltam amúgy pedig direkt egy 1mb-os fájlt töltök fel ami azért nem 3
9

szerintem itt a baj $tmp_dir

szabo.b.gabor · 2011. Szep. 30. (P), 09.00
szerintem itt a baj

$tmp_dir = $_FILES['file']['tmp_name'][0];
// stb..
move_uploaded_file("../".$tmp_dir, $target . $file_name);
a $tmp_dir-ben egy abszolut elérési út van (gondolom) és elé raksz egy '../'-t. ez így nem kerek
10

Igen azt már kiszedtem. Itt a

aky22 · 2011. Szep. 30. (P), 18.04
Igen azt már kiszedtem. Itt a jelenlegi állása a kódnak:

$feltoltve=false;
	foreach ($_FILES['file']['name'] as $filen)
	{
		$file_name = $filen; //a célfájlt nevezze el a $_FILES superglobal változóban lévo fájlnévre (a fájl eredeti nevére)	
	}
		if(!preg_match('/(gif|jpe?g|png|bmp)$/i', $file_name)) //ha a fájlnak ($file_name-nek) a kiterjesztése nem gif, jpg/jpeg, png, akkor...
		{
		echo "Rossz fájltípus!"; //... "dobjon el" egy hibát
		}
		else
		{
			foreach ($_FILES['file']['tmp_name'] as $file)
			{
				$tmp_dir = $file; //az ideiglenes mappa helyét a $tmp_dir változóban tároljuk
			}
			$target="models/".$sex."/".$mappa."/"; //célmappa
			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
		if($feltoltve) {
			$utvonal = $target . $file_name;
			echo 'Sikeresen feltöltötted a képet, megnézheted <a href="'.$utvonal.'">itt</a>!';
		}
Ez pedig a jelenlegi hiba:

Notice: Undefined variable: target in C:\wampjo\www\vinki\balatonfashing\reg.php on line 72
12

Ez pedig a jelenlegi hiba:

Pepita · 2011. Okt. 2. (V), 17.18
Melyik sorban? A te gépeden a 72, de itt?
Vhogy nem jól néz ki a kód, az eredetiben is ilyen? (Megjegyzésben is vannak utasítások)
A hibaüzi: nem definiált "target" nevű változó a 72. sorban, vagyis hivatkoztál rá, de nem volt értéke. Ez csak php figyelmeztetés, de gondolkodj rajta.
Más: fenti tördelés miatt én nemigazán látom át a kódot, de fájlt feltölteni én úgy szoktam, hogy a $_FILES['file']['name'] -ből a basename() fv-el kiveszem a "szűz" fájlnevet, ezelé teszem a könyvtáradatokat, aztán mehet a move_uploaded_file().
Lehet, hogy tévedtem, de most nincs a közelemben konkrétum.
13

Bocsi igen ez csak egy

aky22 · 2011. Okt. 2. (V), 17.23
Bocsi igen ez csak egy részlet a kódból. Amúgy ha olvasod lejjebb már rájöttem a hibára csak nem tudom megoldani és amúgy a kódom se így néz ki már. Jelenleg azon vagyok hogy Sessionnel megoldom de az sem nagyon akar összejönni :/
14

OK

Pepita · 2011. Okt. 2. (V), 18.38
OK, de mi az a hiba, hol az új kód, vagy ha nem érdekes, miért írtad: please help?
11

Rájöttem a hibára de nem

aky22 · 2011. Okt. 2. (V), 16.41
Rájöttem a hibára de nem tudom megoldani. Ugye én egy mappát is létrehozok az elején ahova bele kéne raknia a képeket. Na most amíg a mappa nincsen kész addig nem tudja feltölteni a képeket. Megpróbáltam úgy, hogy két fájlba raktam a mappa készítést és a képfeltöltést, de úgy meg nem tölt föl, mert nem tudom átadni neki a $_FILES tömböt. Lécci adjatok valami használható ötletet (nem kódot!). Az is jó lenne ha AJAXAL valahogy meg lehetne oldani de ahhoz meg nem értek annyira ráadásul a mappák neve a keresztnév és a vezetéknév párosából áll össze. Please HELP!!!