webForumDet fria alternativet
Logga in / Bli medlem

Problem med kataloger i upload-script

PHP

3 svar · 295 visningar · startad av robbanf

Medlem sedan maj 200349 inlägg
Trådstart#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

Medlem 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>
Medlem 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

Medlem 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

385 ms totalt · 4 externa anrop · v20260731065814-full.51f67c91
126 ms — deklarationer (db)
121 ms — hämta statistik (db)
136 ms — hämta tråd, inlägg och bilagor (db)
125 ms — ändringar (db)