---
title: "Problem: Lista filer i mapp"
type: "forum-thread"
url: "https://www.webforum.nu/amne/php/87287-problem-lista-filer-i-mapp"
topic: "PHP"
topic_url: "https://www.webforum.nu/amne/php"
author: "Dryden"
published: "2003-09-30T11:34:15.000Z"
updated: "2003-10-03T22:55:40.000Z"
replies: 10
views: 626
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/php/87287-problem-lista-filer-i-mapp"
---

# Problem: Lista filer i mapp

## #1 — Dryden, 2003-09-30T11:34Z

Har lite problem med ett php-script som jag själv inte har skrivit. ;)
Det hela går ut på att lista filerna i en mapp, som dir alltså, och sedan att dessa filer i webbläsaren blir klickbara länkar.

Så här ser det ut idag:

```
<?
$visa=opendir("mappnamn");
	while($fil=readdir($visa)){
		if(!($fil=="."||$fil=="..")){
		echo "<a href=$fil>$fil</a>";
		}
	}
closedir($visa);
?>
```

Filerna listas och länkas. Så långt korrekt men länkningen blir fel där mappnamnet försvinner ur länken. 
Om scriptet listar "sajt/mappnamn/filnamn.zip" så går länken till "sajt/fil.zip".

Någon för förstår vad jag menar? Php är inte min starka sida. :r ;)

Permalänk: https://www.webforum.nu/p/87287

## #2 — Matte, 2003-09-30T11:42Z

$fil innehåller endast filnamnet så du får lägga till mappnamnet i länken:

```php
echo "<a href=\"mappnamn/$fil\">$fil</a>";
```

Permalänk: https://www.webforum.nu/p/1171954

## #3 — Dryden, 2003-09-30T11:47Z

Det fungerar! :bire

Det går inte lösa så att "mappnamn" hämtas från någonstans? Så att man slipper att fylla i mappnamnet på två ställen. Hänger du med? :)

Permalänk: https://www.webforum.nu/p/1171960

## #4 — Matte, 2003-09-30T12:21Z

```php
$mappnamn = 'mappnamn';
$visa=opendir($mappnamn);
	while($fil=readdir($visa)){
		if(!($fil=="."||$fil=="..")){
		echo "<a href=\"$mappnamn/$fil\">$fil</a>";
		}
	}
closedir($visa);
```

Permalänk: https://www.webforum.nu/p/1171993

## #5 — Dryden, 2003-09-30T15:08Z

Sådär ja! Tackar! :bire

Permalänk: https://www.webforum.nu/p/1172111

## #6 — Dryden, 2003-10-02T12:39Z

Lite mer problem. Scriptet länkar upp alla filer helt korrekt men av någon anledning så får man "Forbidden" när man försöker tanka filerna i fråga via scriptet. De finns ju där och standardrättigheterna ligger på (chmod 755).

Är det någon i scriptet som saknas?

Permalänk: https://www.webforum.nu/p/1173428

## #7 — Matte, 2003-10-02T22:10Z

Det ska fungera, se här: <http://www.a-kok.com/test/test_dryden.php>

Kolla upp dina rättigheter på katalogen/filerna en gång till.

Det är inte så att det är bilder, och webbhotellet tillåter inte direktaccess till bilderna ?

Permalänk: https://www.webforum.nu/p/1173819

## #8 — Dryden, 2003-10-03T08:05Z

Det är zipfiler som inte fungerar. Skickade upp en .txt-fil bara   för att testa och den fungerade att köra, både med chmod 644 och 755.

Någon jag pratade med snackade om headers i scriptet, kan det vara något?

Permalänk: https://www.webforum.nu/p/1173905

## #9 — Matte, 2003-10-03T19:25Z

Det ska inte vara någon skillnad med zip-filer: <http://www.a-kok.com/test/test_dryden.php>

Börjar du prata headers så är detta för en separat fil som identifierar sig som zip-fil.

Då blir det istället något sådant här i din kod:

```php
$mappnamn = 'mappnamn';
$visa=opendir($mappnamn);
    while($fil=readdir($visa)){
        if(!($fil=="."||$fil=="..")){
        echo "<a href=\"showfile.php?filename=$fil\">$fil</a>";
        }
    }
closedir($visa);
```

 
Och sedan filen showfile.php

```php
<?php // <-- Översta raden längs till vänster

$mappnamn = 'mappnamn';

if (isset($_GET['filename']) && fileexists($mappnamn.'/'.basename($_GET['filename']))) {

   $filename = basename($_GET['filename']);

   header("Content-type: application/zip");
   header("Content-Length: ".filesize($mappnamn.'/'.$filename));
   header("Content-Disposition: attachment; filename=$filename"); 

   $fp = fopen($mappnamn.'/'.$filename, "rb");
   fpassthru($fp);

}

exit;

?> // Slut fil
```

\[EDIT\]
Ibland så slinter man på tangentbordet med fingrarna. Ingen höjdare när man skriver kod :)
Se Nexus86 inlägg nedan. Tack Nexus86

Permalänk: https://www.webforum.nu/p/1174288

## #10 — Nexus86, 2003-10-03T20:26Z

Rättelse, 

```php
header ("Content-type: applocation/zip");

// Ska bytas mot

header("Content-type: application/zip");
```

R// Se <http://www.webforum.nu/showthread.php?s=&forumid=23&threadid=69262&highlight=attachment> ang Content-Disposition

Permalänk: https://www.webforum.nu/p/1174317

## #11 — Nexus86, 2003-10-03T22:55Z

Hmm.. Matte verkar ha sluntit med tangenterna på ett till ställe. ;)

Skriver en egen variant av samma fil som (förhoppningsvis) fungerar bättre.

I koden:

```php
$mappnamn = 'mappnamn';
$visa=opendir($mappnamn);
    while($fil=readdir($visa)){
        if($fil != "." && $fil != ".."){
           echo "<a href=\"showfile.php?filename=$fil\">$fil</a>";
        }
    }
closedir($visa);
```

I showfile.php:

```php
<? // <-- Översta raden längs till vänster

$mappnamn = 'mappnamn';

if (isset($_GET['filename']) && file_exists($mappnamn . '/' . basename($_GET['filename']))) {

   $filename = $_GET['filename'];

   header("Content-type: application/force-download");
   header("Content-Length: ".filesize($mappnamn . '/' . $filename));
   if (strpos($_SERVER['HTTP_USER_AGENT'], "MSIE") && !strpos($_SERVER['HTTP_USER_AGENT'], "Opera")) {
      header("Content-Disposition: filename=$filename%20");
   } else {
      header("Content-Disposition: attachment; filename=$filename");
   }

   readfile($mappnamn . '/' . $filename, TRUE);
}
?> // Slut på fil
```

Permalänk: https://www.webforum.nu/p/1174404

---

Tråden på webben: https://www.webforum.nu/amne/php/87287-problem-lista-filer-i-mapp
