Autor Zpráva
týpek
Profil *
Ahoj
mám index.php a v něm upload skript, který nahrané soubory dává do složky "upload" , ve složce upload jsem si udělal roster.php ten vypisuje obsah adresáře, tedy soubory jejich velikost a poslední změnu,
když zadám adresu adresa.cz/upload/roster.php funguje to a vypíše to obsah adresáře "adresa.cz/upload/"
když ale dám include roster.php do index.php a zadám adresu adresa.cz/index.php tak mi to vypíše obsah "adresa.cz/" tedy (index.php, upload)
tak jsem tedy soubor roster.php přesunul k souboru index.php do adresa.cz/ a v roster.php jsem změnil opendir('.') za opendir('./upload/')
podle mě korektní a mělo by to fungovat ale v index.php mi to to píše "Warning: filesize() [function.filesize.html]: stat failed for nahranýsoubor.rar in adresa.cz/roster.php on line 21" a "Warning: filemtime() [function.filemtime.html]: stat failed for nahranýsoubor.rar in adresa.cz/roster.php on line 35"

tady přikládám roster.php
<?php
$filelist = array();
if ($handle = opendir('./upload/')) 
	{
	while (false !== ($file = readdir($handle)))
		{
		if ($file != "." && $file != "..")
			{
			$filelist[] = $file;
			}
		}
	closedir($handle);
	}
?>

<table border="1" bgcolor="#56514c" rules="all">

<?php
foreach ($filelist as $item)
	{
	$size = filesize($item);
	
	if($size < 1024)
		{$size2= $size. " B";}
	if ($size >= 1024)
		{$size = round($size/1024);
		$size2= $size. " KB";}
	if ($size >= 1024)
		{$size = round($size/1024 , 1);
		$size2= $size. " MB";}
	if ($size >= 1024)
		{$size = round($size/1024 , 2);
		$size2= $size. " GB";}
		
	$date = date("d.m.y", filemtime($item));
	$time = date("H:i", filemtime($item));
		
	echo "<tr><td>".$item."</td><td>".$size2."</td><td>".$date."<br />".$time."</td></tr>\n";
	}
unset ($item);
?>

</table>


jak mám tedy vložit roster.php do indexu tak aby mi to vypisovalo obsah složky "upload"?
Knight
Profil
Ten opendir('./upload/') se mi nelíbí.

Používal bych buď absolutní cesty, pomocí $_SERVER["DOCUMENT_ROOT"], nebo magickou konstantu __DIR__, která vrací cestu ke skriptu (přičemž pokud je v includovaném souboru, tak je to jeho cesta).
Knight
Profil
Takže ještě pro doplnění:

$handle = opendir(__DIR__ . '/upload')

otevře složku /upload z umístění, kde je roaster.php. Takže pokud bude roaster.php ve složce upload, bude se otevírat upload/upload.

$handle = opendir($_SERVER["DOCUMENT_ROOT"] . '/upload')

otevře vždy složku /upload, která je v rootu webu
týpek
Profil *
dal jsem tam tedy
$handle = opendir($_SERVER["DOCUMENT_ROOT"] . '/upload')


ale v indexu mi to pořád vypisuje chyby
když zadám adresu na roster.php tak se vypíše tabulka bez chyb

Warning: filesize() [function.filesize.html]: stat failed for ziz.xls in D:\HTTP\upload\roster.php on line 22

Warning: filemtime() [function.filemtime.html]: stat failed for ziz.xls in D:\HTTP\upload\roster.php on line 36

Warning: filemtime() [function.filemtime.html]: stat failed for ziz.xls in D:\HTTP\upload\roster.php on line 37
oop
Profil *
Variace na stejne téma...
<?php
class MyDirectoryIterator extends DirectoryIterator {
	
	public function __construct($path) {
		parent::__construct($path);
	}
	
	public function getFormatSize(){
		$Size = $this->getSize();
		if($Size == 0){ return("0 Bytes"); }
		$sizeName = array(" Bytes"," KB"," MB"," GB"," TB"," PB"," EB"," ZB"," YB");		
		return round($Size/pow(1024,($i=floor(log($Size,1024)))),2).$sizeName[$i];
	}
}

print"<table>\n";
foreach (new MyDirectoryIterator('./upload/') as $item) {
	if($item->isFile()){
		print '<tr><td>'.$item->getFilename().'</td><td>'.$item->getFormatSize().'</td><td>'.date("d.m.y H:i", $item->getMTime()).'</td></tr>'."\n";
	}
}
print"</table>\n";
?>
týpek
Profil *
díky "oop", tohle funguje skvěle

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0