Avatar billede rolf.w Nybegynder
13. december 2005 - 22:27 Der er 14 kommentarer

Upload af filer

Hej.. jeg vil gerne have fundet en måde, hvor alle som besøger min side har mulighed for at uploade en fil til min server, dog med ét max på 3mb. pr fil.
Avatar billede jakobdo Ekspert
13. december 2005 - 23:18 #1
Til at starte med synes jeg du skal kigge på dette link: http://www.webcafe.dk/artikler/php/upload/
Avatar billede rolf.w Nybegynder
14. december 2005 - 16:01 #2
Ja.. det virker faktisk godt nok! men når jeg har upload'et en fil, kommer formlen ikke frem igen. det er en blank side.! herefter kan jeg genindlæse siden(F5), også kommer den frem igen.
Avatar billede jakobdo Ekspert
14. december 2005 - 16:10 #3
Der skal du jo så lige rette koden, så den evt smider dig til siden efter følgende!
Evt kan du tilføje noget kode efter:

/* Saa koerer vi */
if(function_exists("move_uploaded_file")) {
  move_uploaded_file($fra, $til);
} else {
  copy($fra, $til);
}

header("location: " . $_SERVER['PHP_SELF']);
Avatar billede rolf.w Nybegynder
14. december 2005 - 17:07 #4
okay... det skulle den da gerne gøre med den kode som står det..?! eller er det bare mig
Avatar billede jakobdo Ekspert
14. december 2005 - 17:09 #5
Jo, det skulle den faktisk!
Prøv evt at ret til: header("location: DINUPLOADFIL.PHP");
Avatar billede rolf.w Nybegynder
14. december 2005 - 18:11 #6
det ændre ikke noget.!
der er heller ikke nok bare at trykke på f5..
jeg skal skrive url'en ind igen, for at den bliver vist.!
Avatar billede jakobdo Ekspert
14. december 2005 - 18:26 #7
Prøv lige at smid hele din kildekode herind!
Der må være noget galt! :o)
Avatar billede rolf.w Nybegynder
14. december 2005 - 18:52 #8
<?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"] = "2000";


/**
* 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: site-upload.PHP");
  exit;

} else {

  /**
  * Intet tegn paa upload, saa vi viser bare listen over filer
  * og HTML-formularen til nye uploads.
  */

  $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="./"></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="center" bgcolor="#cccccc"><b>angiv en fil</b></td>
                    <td bgcolor="#cccccc"><input type="file" name="upfil" /></td>
                  </tr>
                  <tr>
                    <td colspan="2" align="middle" bgcolor="#cccccc"><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);
  }

}

?>

---------
jeg har fjernet:
  $indhold = listFiler($konfiguration["upload_bibliotek"]);
da jeg ikke ville have den til at vise fil'erne.
Avatar billede jakobdo Ekspert
14. december 2005 - 19:02 #9
Har du et link til siden?
Avatar billede rolf.w Nybegynder
14. december 2005 - 20:07 #10
Avatar billede jakobdo Ekspert
14. december 2005 - 20:18 #11
Prøv lige at ret:
header("location: site-upload.PHP");
exit;

til:
echo "Her skal vi kalde headeren";
exit();
Avatar billede rolf.w Nybegynder
14. december 2005 - 20:22 #12
Så er det ændret!
Avatar billede jakobdo Ekspert
14. december 2005 - 20:37 #13
Test lige denne kode!

Jeg tror noget at det test som er i toppen driller!

<?php
//http://exp.dk/spm/

$konfiguration['upload_bibliotek'] = "./upload";
$konfiguration['max_stoerrelse'] = "3000";

if($_FILES['upfil']['size'] > 0)
{
  $fra = $_FILES['upfil']['tmp_name'];
  $til = $konfiguration['upload_bibliotek'] . "/" . $_FILES['upfil']['name'];

  $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
{
  $indhold .= bygFormular($_SERVER['PHP_SELF']);
  $output = bygSide("hej", $indhold);

}

echo $output;
exit;

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

function bygSide($titel, $indhold)
{
    return '<html>
                    <head><title>' . $titel . '</title></head>
                    <body bgcolor="#ffffff">
                    <div align="right"><a href="./"></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="center" bgcolor="#cccccc"><b>angiv en fil</b></td>
                    <td bgcolor="#cccccc"><input type="file" name="upfil" /></td>
                  </tr>
                  <tr>
                    <td colspan="2" align="middle" bgcolor="#cccccc"><input type="submit" value="upload" /></td>
                  </tr>
                </table>
              </form>
              ';

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

?>
Avatar billede rolf.w Nybegynder
14. december 2005 - 20:54 #14
ok
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