webForumDet fria alternativet

Problem med kataloger i upload-script

3 svar · 293 visningar · startad av robbanf

robbanfMedlem sedan maj 200349 inlägg
#1

Jag håller på att göra ett upload-script så jag kan ladda upp filer direkt till min webserver från en browser, men jag får inte riktigt ordning på kataloghanteringen.

Det går bra i ett steg, men sen blir det fel.

Jag kan förstå varför det inte fungerar, men jag har ingen aning om hur jag ska göra istället, för att få det att fungera i "obegränsat" antal nivåer.

Lite kod:


$homeurl = "http://robbanf.com";

if (false == isset($_GET['subdir'])) {
	$homedir = "/test/";
}
	else
	{
	$homedir = "/test/" . $_GET['subdir'] . '/';
	
}
$path = $_SERVER['DOCUMENT_ROOT'].$homedir;
if (!$path) {
	die("Kunde inte öppna katalogen.");
}

echo $homedir;
if ($handle = opendir($path)) {
	while (false !== ($file = readdir($handle))) {
	if ($file != "." && $file != ".." && is_dir($path.$file)) {
	echo '<tr><td width="5%"><img src="http://robbanf.com/kat.gif">
</td><td width="95%"><b><a href='.$_SERVER['PHP_SELF'].'?subdir='.$file.'">' . $file . '</a></b></td></tr>';
	}
}

closedir($handle);
}

Några tips?

/ Robban

BäckmanMedlem sedan nov. 2001274 inlägg
#2

Satt själv och pillade lite med just det här idag. Det jag åstadkom var typ det du är ute efter. Om du förstår dig på koden så får du använda den till vad du nu vill. :)

<html>
<head>
<title>Filhantering</title>
</head>
<body>

<?php
if (isset($_GET["chosendir"])) {
	$dir =  $_GET["chosendir"];
} else {

	$dir = $_SERVER["SCRIPT_FILENAME"];
	$dir = str_replace(basename($dir), '', $dir);
}

$char = substr($dir, strlen($dir) - 1, strlen($dir));

if ($char !== "/") {
$dir = $dir ."/";
}

	$pos = strrpos($dir, "/");
	$back = substr($dir, 0, $pos);
	$pos = strrpos($back, "/");
	$back = substr($back, 0, $pos + 1);

if ($handle = opendir($dir)) {
echo "Innehåll i <span style=\"font-weight: bold;\">". $dir ."</span>:<br/>";

	while (false !== ($file = readdir($handle))) {

		if ($file !== ".." && $file !== ".") {
			if (filetype($file) == "dir") {
				$dirs[] = $file;
			} else {
				$files[] = $file;
			}
		}
	}
}

	echo "<a href=\"". $_SERVER["PHP_SELF"] ."?chosendir=". $back ."\">bakåt</a><br/>";

if (count($dirs) > 0) {
	sort($dirs);
	foreach ($dirs as $key) {
		echo "<a href=\"". $_SERVER["PHP_SELF"] ."?chosendir=". $dir . $key . "/" ."\">". $key ."</a><br/>";
	}
} else {
echo "Inga mappar i denna mappen.";
}

echo "<br/><br/>";

if (count($files) > 0) {
	sort($files);
	foreach ($files as $key) {
		echo $key ."<br/>";
	}
} else {
echo "Inga filer i denna mappen.";
}

?>
</body>
</html>
robbanfMedlem sedan maj 200349 inlägg
#3

Ditt exempel funkar bra, men jag vill inte använda absoluta sökvägar i url:en. Hur ska man göra för att använda relativa sökvägar istället (relativt katalogen man startar i alltså).

/ Robban

robbanfMedlem sedan maj 200349 inlägg
#4

Jag undrar även om man kan lösa det utan att skicka information i url:en? Som när man använder method="post" i ett formulär menar jag.

/ Robban

125 ms totalt · 3 externa anrop · v20260731065814-full.2b84b982
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
122 ms — hämta tråd, inlägg och bilagor (db)