webForumDet fria alternativet

Radda upp mappar och filer automatiskt...

PHP

6 svar · 366 visningar · startad av bassebhu

Medlem sedan nov. 20016 480 inlägg
Frågan#1

Hej alla glada!

Har precis fått igång en lokal server med php-stöd :e

Jag skulle vilja på ett enkelt sätt skriva ut samtliga mappar och filer som finns i en bestämd mapp med hjälp av php. Detta för att jag ska kunna se mina filer med namn även om jag inte är hemma. Det är ingen share-server på gång alltså, då hade jag inte startat en webbserver ;)

Någon som har ett litet php-script liggandes?

Ett exempel på hur jag vill ha det:
Jag går in på min sida. Där loopas alla mappnamn ut som ligger i en viss mapp på min dator. Detta är steg ett... Svar hur jag kommer hit til att börja med uppskattas :)

Sen är det tänkt att man ska kunna navigera precis som på datorn. Man kan öppna mappen och komma till nästa nivå och sedan till olika filer osv.

Om någon sitter på ett schysst script för att radda upp samliga filer i en mapp (även i undermappar) på nåt snyggt kategoriserat sätt så tas det också emot med stor tacksamhet :)

Mvh, biten

Medlem sedan juli 20023 617 inlägg
#2

Ett femminutershack såhär på morgonkvisten. Något att börja med kanske?

<?
$dir = "./";

$dh = opendir($dir);

	while ( $filename = readdir($dh) ) {
      		echo $filename."<br>\n";
  	}

closedir($handle); 
?>
Medlem sedan aug. 20002 975 inlägg
#3

Något du kanske kan arbeta vidare på:

<?php

// Startkatalog för filer, utgå från skriptet
// Ange katalog UTAN avslutande /
$path = './bilder';
 
// Kolla att GET-variabel finns, annars sätt defaultvärde
$dir = isset($_GET['dir']) ? trim($_GET['dir']) : '';
// För hindra att man kan gå uppåt i katalogstrukturen
$dir = str_replace("../", "", $dir);

// Kolla att katalog existerar
if (!file_exists($path.'/'.$dir) || !is_dir($path.'/'.$dir)) {
   $dir = '';
}
 
// Hämta katalog- och filnamn
$files = array_merge(get_files($path, $dir, true), get_files($path, $dir));

// Skriv ut filnamnen

echo "<table>\n";

foreach ($files as $file) {
   echo '
     <tr>
     <td><a href="'.$file['link'].'">'.$file['name'].'</a></td>
     <td style="text-align:'.$file['align'].'">'.$file['size'].'</td>
     </tr>
   ';
}

echo "</table>";

function get_files($path, $dir, $isdir=false) {
 
   $files = array();
 
   if ($handle = opendir($path.'/'.$dir)) { 

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

         if ($file != "." && $file != ".." && is_dir($path.'/'.$dir.'/'.$file) === $isdir) {

            if ($isdir) {
               $dirname = preg_replace("/^[\\.\\/]*/", "", $dir.'/'.$file);
               $link = $_SERVER['PHP_SELF']."?dir=$dirname";
               $filesize = '[DIR]';
               $align = 'left';
            } else {
               $link = "$path/$dir/$file";
               $link = preg_replace("/\\/+/", "/", $link);
               $filesize = number_format(filesize($path.'/'.$dir.'/'.$file), 0, ',', ' ');
               $align = 'right';
            }
            $files[] = array('name'=>$file, 'link'=>$link, 'size'=>$filesize, 'align'=>$align);
         } 

      } 
      closedir($handle); 
      
      sort($files);
      // Om vi ej är i startkatalogen, lägg till länk till katalog över
      if ($isdir && !empty($dir)) {
         $dirname = preg_replace("/^[\\.\\/]*/", "", dirname($dir));
         $overdir[] = array('name'=>'..', 'link'=>$_SERVER['PHP_SELF'].'?dir='.$dirname, 'size'=>'[DIR]', 'align'=>'left');
         $files = array_merge($overdir, $files);
      }
      
   }
 
   return $files;
 
}

?>
Medlem sedan nov. 20016 480 inlägg
#4

Schysst, ska testa ikväll :D

Medlem sedan juli 20023 617 inlägg
#5

Bra skript Matte! Jag snor det på en gång... :)

Medlem sedan dec. 2003153 inlägg
#6

// För hindra att man kan gå uppåt i katalogstrukturen
$dir = str_replace("../", "", $dir);

bör utökas med:
$dir = ($dir == '..') ? '' : $dir;

så man inte själv kan skriva in ?dir=..

Medlem sedan apr. 2002830 inlägg
#7

Kolla WEBInsta File Manager, perfekt verktyg!

https://www.webinsta.com

/Nippe

267 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
126 ms — deklarationer (db)
0 ms — hämta statistik (cache)
133 ms — hämta tråd, inlägg och bilagor (db)
132 ms — ändringar (db)