Avatar billede oleodder Nybegynder
26. juli 2004 - 20:10 Der er 6 kommentarer og
1 løsning

Vis filer samt Upload fil til mappe - script

Hej Alle

Jeg anvender normalt ASP, men er af en kammerat blevet spurgt om jeg kan hjælpe.
Problem:

Jeg ønsker et script, der kan vise hvilke jpg billeder der ligger i en mappe på webhotellet.
+
Et upload script, der kan uploade nye billeder til denne mappe.

Er det meget besværligt ??
Er det nogle der ligger et sted eller hvad ??
Websitet er hos B-One.

Jeg forstår desværre overhovedet intet PHP.

Er der nogle PHP freaks der kan hjælpe ??

Mange tak ;-)
Avatar billede googolplex Novice
26. juli 2004 - 21:31 #1
Dette upload script virker hos B-one:

http://www.webcafe.dk/artikler/php/upload/
Avatar billede oleodder Nybegynder
26. juli 2004 - 23:29 #2
PERFEKT - Det er lige præcis det jeg har ønsket !! Alletiders........ Mange Mange tak.

Jeg kopierede den enkelte fil og satte direkte ind på mit website og vupti - alt virkede -> Perfekt.

Lille tillægsspørgsmål:

Mappen jeg uploader til er udelukkende for jpg billeder.
Koden lister alle jpg filerne med navn, som jeg så kan klikke på, fot at se billedet - men er det nemt, lige at tilføje lidt kode, således at selve billedet bliver vist sammen med billedets filnavn ???

Forstår du ??
Avatar billede oleodder Nybegynder
26. juli 2004 - 23:30 #3
Det er nedenstående kode jeg blot satte ind:

<?php

/**
* Simpelt script der tager imod et filupload og lister
* filer i upload-biblioteket.
*
* Scriptet er et eksempel til en artikel paa WebCafe.dk:
*
*    http://www.webcafe.dk/artikler/php/upload/
*/


/**
* Hvor skal filerne uploades til?
* Husk, at webserveren skal kunne skrive til dette bibliotek
*/
$konfiguration["upload_bibliotek"] = "./upload";

/* Hvor mange kilobytes maa filerne fylde per styk? */
$konfiguration["max_stoerrelse"] = "30";


/**
* Checker PHP-version
*/
list($major, $minor, $rev) = explode(".", phpversion());
if($major < 4) {
  die("Jeg kan kun arbejde med PHP 4.0.0 eller derover");
}


/**
* Udligner forskellene mellem 4.1.x og 4.0.x
* Bemaerk, at disse ikke er "superglobals"
*/
if($minor < 1) {
  $_FILES = $HTTP_POST_FILES;
  $_POST = $HTTP_POST_VARS;
  $_SERVER = $HTTP_SERVER_VARS;
}


if($_FILES["upfil"]["size"] > 0) {

  /**
  * Hvis der er en fil, saa uploader vi den.
  *
  * Foerst slaar vi lige fast, hvor filen skal flyttes fra og til.
  */

  $fra = $_FILES["upfil"]["tmp_name"];
  $til = $konfiguration["upload_bibliotek"] . "/" . $_FILES["upfil"]["name"];

  /**
  *  Checker lige om filen er for stor til at vi vil acceptere den.
  *  Vi bruger ceil() i stedet for round(), saa vi ikke faar den skoere
  *  situation, at fejlmeldingen siger, at filen er for stor, men angiver
  *  samme stoerrelse for filen og den oevre graense.
  */
  $fil_stoerrelse = filesize($fra)/1024;
  if($fil_stoerrelse > $konfiguration["max_stoerrelse"]) {
      die("Desv&aelig;rre - filen er for stor. Jeg accepterer kun " .
          $konfiguration["max_stoerrelse"] . "kb, og din fil fylder " .
          ceil($fil_stoerrelse) . "kb");
  }
  if(function_exists("move_uploaded_file")) {
    move_uploaded_file($fra, $til);
  } else {
    copy($fra, $til);
  }

  header("Location: " . $_SERVER["PHP_SELF"]);
  exit;

} else {

  /**
  * Intet tegn paa upload, saa vi viser bare listen over filer
  * og HTML-formularen til nye uploads.
  */
  $indhold = listFiler($konfiguration["upload_bibliotek"]);
  $indhold .= bygFormular($_SERVER["PHP_SELF"]);
  $output = bygSide("hej", $indhold);

}


/**
* Skriver ud til browseren
*/
echo $output;
exit;



/**************************************************\
**              Hjaelpefunktioner              **
\**************************************************/

function bygSide($titel, $indhold) {

  /**
  * Pakker indholdet ind i lidt formalia
  */
  return '<html>
            <head><title>' . $titel . '</title></head>
            <body bgcolor="#ffffff">
              <div align="right"><a href="./">Tilbage til artiklen</a></div>
              ' . $indhold . '</body>
          </html>
        ';

}

function bygFormular($action) {

  $formular = '<form action="' . $action . '" method="post" enctype="multipart/form-data">
                <table border="1" cellpadding="5" cellspacing="0">
                  <tr>
                    <td align="right" bgcolor="#999999"><b>Fil til upload:</b></td>
                    <td bgcolor="#cccccc"><input type="file" name="upfil" /></td>
                  </tr>
                  <tr>
                    <td colspan="2" align="middle" bgcolor="#dddddd"><input type="submit" value="upload" /></td>
                  </tr>
                </table>
              </form>
              ';

  return "<h2>Upload fil:</h2>" . $formular;

}

function listFiler($bibliotek) {

  if($bib = @opendir($bibliotek)) {
    /**
    * Denne syntaks er forklaret i PHP-manualen:
    * http://www.php.net/manual/en/function.readdir.php
    */
    while (false !== ($fil = readdir($bib))) {
      if($fil != "." && $fil != ".." && !ereg("^\..+", $fil)) {
          $fil_liste[] = "<a href=\"$bibliotek/$fil\">$fil</a>";
      }
    }
    closedir($bib);

    if(is_array($fil_liste)) {
      $liste = "<li>" . join("</li><li>", $fil_liste) . "</li>";
    } else {
      $liste = "<li>Ingen filer p&aring; lager</li>";
    }
    return "<h2>Filer p&aring; lager:</h2><ul>" . $liste . "</ul>";
  } else {
    die("Kunne ikke &aring;bne biblioteket: " . $bibliotek);
  }

}

?>
Avatar billede oleodder Nybegynder
26. juli 2004 - 23:33 #4
...og lige et lille bitte ønske mere: Kan man ikke gøre således, at der for eks. bliver vist 5 billeder/filer af gangen, FØR der skiftes linie ???

....ellers bliver siden så lang og uoverskuelig.

;-)
Avatar billede oleodder Nybegynder
27. juli 2004 - 23:07 #5
Hej googolplex

Mange tak for dit svar, det var præcist det jeg ønskede. Jeg tildeler dig hermed point'ne.

Vedrørende mine ekstra spørgsmål, så opretter jeg dem lige som et nyt spørgsmål.
Avatar billede googolplex Novice
27. juli 2004 - 23:11 #6
Takker for point :)
Avatar billede oleodder Nybegynder
27. juli 2004 - 23:15 #7
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester