ugrás a tartalomhoz

Feltoltott fajlok meretenek elenorzese

Anonymous · 2006. Szep. 27. (Sze), 07.32
Van egy php szkriptem amely fajlok feltoltesere szolgal.
A feltoltott fajlok neve, merete, tipusa egy ideglenes mySQL tablaban lesznek tarolva (files_temp).

Peldaul ha egy felhasznalo feltolt egy fajlot a kovetkezo adatok kerulnek be a tablaba (ahol userid a felhasznalo azonositoja)

id  	 userid  	 name  	    	 size  	 type
1 	   3            File.exe    	  79360 	application/x-sdlc
Maga a fajl a szerveren lesz tarolva.

Hogyan tudnam leelenorizni az osszes feltoltott fajl meretet, es visszakuldeni a browszernek egy valaszt, hogy ok most tovabb lephetek, mert az osszes feltoltott fajl merete osszeadva nem haladja meg a 10MB-t.

En gondoltam a mySQL sum hasznalatara. De nem tudom meghatarozni, hogy melyik fajlokat toltottem fel utoljara. A mysql_insert_id is csak az utolso bejegyzest kuldi vissza.

Tudnatok esetleg mas otleteket adni ? A lenyeg az, hogy a szerveren vegezem el a leelenorzest, nem ragaszkodok a mySQL megoldashoz sem.

Koszonom !
 
1

filesize

Anonymous · 2006. Szep. 27. (Sze), 07.37
Filesize függvény?
2

Koszonom

Anonymous · 2006. Szep. 27. (Sze), 07.43
Nem hallotam rola, le tudnad irni kicsit reszletesebben mire hasznaljak?
A fugveny mySQL-ben van tamogatva vagy PHP-ben?

Mondjuk fugveny letezik mySQL-ben is, a SUM de olvasd el fent amit el szeretnek erni. Tegyuk fel, hogy a felhasznalo tobb fajlot kuld fel.

Koszonom!
3

leírták a választ...

TeeCee · 2006. Szep. 27. (Sze), 08.19
Mondjuk fugveny letezik mySQL-ben is, a SUM de olvasd el fent amit el szeretnek erni. Tegyuk fel, hogy a felhasznalo tobb fajlot kuld fel.

A fugveny mySQL-ben van tamogatva vagy PHP-ben?

Ajánlom, tölts fel több 'fájlot', aztán írasd ki, hogy mit tartalmaz...

echo '<pre>';
print_r($_FILES);
echo '</pre>';
Nem értem, miért akarsz mindig az adatbázishoz fordulni, egy for, foreach ciklussal sokkal könyebben megkapnád a PHPval a választ arra, hogy melyik fájl mekkora ($_FILES tömbben) és ezeket nyilván össze tudod adni...
4

kosz

Anonymous · 2006. Szep. 27. (Sze), 08.28
ok, de akkor meg szuksegem van a Filesize fuggvenyre?
5

rossz volt a kérdés

TeeCee · 2006. Szep. 27. (Sze), 08.44
Hogyan tudnam leelenorizni az osszes feltoltott fajl meretet

Ez számomra is azt jelenti, hogy hogyan tudom megnézni, hogy amit feltöltöttek, az mekkora volt. (mondjuk attól még ki lehetett volna találni, hogy mit szeretnél, cask az már nehezebb...)
Holott, te erre vagy kíváncsi:
"Honnan tudom megmondani, hogy a feltöltött fájlok összesen mekkora helyet foglalnak?"

És a válasz: én nem használnám a filesize() függvényt, hanem összeadnám a $_FILES tömbben lévő megfelelő értékeket.

Amúgy meg, ha php.ini-ben van korlátozva, akkor NEM fogod megkapni a fájlokat, ha nagyobb, mint 10Mb (http://hu.php.net/manual/hu/features.file-upload.errors.php#67931) . Paradox helyzet, de ez van.
A PHP 5.2-től kezdve (ha jól emléxem) a feltöltött fájlokra vonatkozóan lesz infó, olyan, ami miatt a file progressbar-okat mostanában perlel, vagy más módon kell megoldani, csak PHPvel nem lehet. Bár IMHO erre még várni kell, hogy elterjedjen ;)
6

ok

Anonymous · 2006. Szep. 27. (Sze), 08.55
letrehoztam a kovetkezot
<?php
foreach ($_FILES['userFile']['size'] as $key => $value)
{
  if (!empty($_FILES['userFile']['size'][$key]) )
  {
     print $value;	
  }
}
?>
Meg tudnad mondani, hogyan tudnam ossze adni az osszes erteket es egy valtozoba taroljam ?
7

nem hiszem el...

Anonymous · 2006. Szep. 27. (Sze), 09.26
... hogy segitseget kernek ilyen alap dolgokban!

Akik ezeket nem tudjak megoldani onalloan, miert allnak neki php-ben programozni? Nagy kerdojel szamomra ez mindig, honnan az ihlet? Mit akarnak csinalni az eddigi megszerzett tudassal?

Nem vitat szeretnek, mert tudom, az a lenyeg segitsuk egymast gyerekek, de valahol kellene szabni egy hatart, hogy milyen kerdesek hangozhatnanak el.
9

tudom

Anonymous · 2006. Szep. 27. (Sze), 09.40
Igen tudom, hogy lama kerdest tettem fel es alap dolog, de sietek, mert be kell fejezem egy oran belul, szoval nagyon orulnek ha tudnal kicsit segiteni.
12

Sietés

Anonymous · 2006. Szep. 27. (Sze), 09.45
Ha majd lesz időd, akkor olvasd el: http://www.no.info.hu/~kryss/gnu/esr/smart-questions_hu.html

Egyébként nesze:
[colorer=php]
<?php
$filemeret = 0;
foreach ($_FILES as $file)
{
$filemeret = $filemeret + $file['size'];
}
echo("Összesen " . $filemeret . " byte adatot töltöttél föl.");
?>

Most néztem a kódodat, meglehet úgy csinálni, ha a file mező neve az, hogy userFile[]. Akkor megfelelően kell módosítani a foreach paraméterét és a ciklust.
10

Hogy nehogy...

Anonymous · 2006. Szep. 27. (Sze), 09.40
Hogy nehogy azt mondd, hogy szívtelen kutyák vagyunk és elhajtjuk a kezdőket, a + operátorral kell összeadni (mint általános iskolában). És aki ENNYIRE kezdő kérdést tesz föl, jobb, ha a legelejétől kezdi el böngészni a PHP kézikönyvet. http://php.net/

Ha nem tudsz angolul, akkor séta a legközelebbi megfelelő könyvesboltba vagy itt nézd meg a könyvajánlót és végy egy PHP könyvet.

Egy másik A.

ui. szerintem, az a kód ott nagyon nem jó. honnan szedted?
11

egyszerű összeadás

Anonymous · 2006. Szep. 27. (Sze), 09.41
ugyanúgy kell összeadni, mit ahogy összeadnád például az array(1,2,3,4,5) tartalmát. csinálsz egy összes változót, amit a foreach minden ciklusában megnövelsz az aktuális értékkel. konkrét kódot írni szerintem senki sem fog.

gex
14

koszonom

Anonymous · 2006. Szep. 27. (Sze), 09.56
Nincs is szuksegem kodra, csak otleteket kertem.
Vegul is talaltam egy egyszerubb megoldast

<?php
if ($_FILES['userFile']['size'] > 10485760)
{
   print "A fajlok merete nagyobb mint 10MB";
}
?>
8

Összes file

vbence · 2006. Szep. 27. (Sze), 09.36
A kérdés, hogy egy darab formba tölt-e fel soksok fájlt, vagy egyenként. Ha egyenként tölti fel őket (amit valószínűsítek), akkor csak az adatbázisos megoldás a jó. Mivel a táblád neve files_temp - gondolom a feldogozás végén töltöd az adfatokat. Így elég user szerint szűrni:
SELECT SUM(size) FROM files_temp WHERE userid=33;
Gondolom, minden egyes fájl feltöltése végén ki akarod írni, még mennyi hely van további fájloknak aztán ha fent van minden (mint egy varázsló utolsó lépése) megynomja a user a "Nem kell több fájl" gombot, amire az adatok törlődnek a files_temp -ből.

Ja, és van két progrssbarom feltöltésre PHP-ben. Ha nagyon erőszakosak vagytok akkor talán írok egy cikket belőlük...
13

másik téma folytatása

Anonymous · 2006. Szep. 27. (Sze), 09.51
Ha egyenként tölti fel őket (amit valószínűsítek)

szerintem elég valószínű, hogy ezt a témát folytatjuk ("fajlot" ragozás).

egyébként az egyesével feltöltött fájlokhoz szerintem elég a session is, amennyiben egyszeri feltöltésről van szó. ha később esetleg töröl és újabbakat is feltölt, akkor meg úgyis szüksége lesz az sql-re.

gex

u.i.: aztán még az is jó kérdés, hogy mihez kapcsolódnak a fájlok, én nem hiszem, hogy egy felhasználóhoz, úgyhogy más alapján csoportosítanék.