Avatar billede michaeljuul Nybegynder
07. marts 2005 - 23:40 Der er 25 kommentarer og
1 løsning

Upload til flere Dir.

Jeg kunne godt tænke mig, at folk der vil uploade til mig. Får mulighed for at uploade til forskellige Dir. F.eks Dir1, Dir2, Dir3, Dir4, Dir5 og Dir6. Og andre så kan Downloade fra de Dir.
Er dette muligt?

/Michal
Avatar billede baitianlong Nybegynder
07. marts 2005 - 23:45 #1
ja, hvis du uploader "som sædvanligt" med http, kan du jo bare fortælle metoden move_uploaded_file() hvor den skal hen :)
Avatar billede baitianlong Nybegynder
07. marts 2005 - 23:46 #2
Avatar billede michaeljuul Nybegynder
07. marts 2005 - 23:53 #3
Tak. Men kan ikke lige gennemskue det. Jeg har brug for 6 Dir under et Dir ved navn Uploads.
Jeg har denne kode nu.

<?php

/* Funktioner der benyttes */

function list_filer($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å lager</li>";
    }
    return "<h2>Filer på lager til brug på TEC</h2><BR>
        <h5>Hvis du uploader noget, så send mig<BR>
        en mail up@duerher.dk:</h5><ul>" . $liste . "</ul>";
  } else {
    die("Kunne ikke åbne biblioteket: " . $bibliotek);
  }

}

function upload_fil($fil, $max_stoerrelse = 9000000, $bibliotek = "default", $filtyper_tilladt = "default") {

    if ($bibliotek == "default") {
        $bibliotek = "ind";
    }

    if ($filtyper_tilladt == "default") {
        $filtyper_tilladt = array("image/bmp", "image/jpeg", "image/pjpeg", "image/tiff", "image/png", "image/gif", "application/pdf", "application/zip", "application/arj", "application/msword", "application/vnd.ms-excel", "application/exe", "application/x-zip-compressed", "application/octet-stream");
    }


    if ($fil["size"] > 0) {
       
        $filnavn = strtolower(ereg_replace(" ", "_", $fil["name"]));
        $fra = $fil["tmp_name"];
        $til = $bibliotek . "/" . $filnavn;
        $fil_stoerrelse = filesize($fra)/10240;
        $filtype = $fil["type"];
        $fejl = 0;

        if (!in_array($filtype, $filtyper_tilladt)) {
            echo "<p>Filtypen '$filtype' er ikke tilladt. De tilladte filtyper er '" . implode("', '", $filtyper_tilladt) . "'. Filen '$filnavn' kan derfor ikke uploades!</p>";
            $fejl = 1;
        }
        if ($fil_stoerrelse > $max_stoerrelse) {
            echo "<p>Filen '$filnavn' er for stor og kan ikke uploades. Den fylder " . ceil($fil_stoerrelse) . " kb og der kan maximalt uploades $max_stoerrelse kb!</p>";
            $fejl = 1;
        }
        if ($fejl == 0) {
            if (file_exists($til)) {
               
                $pos = strrpos($filnavn, ".");
                $foerpos = substr($filnavn, 0, $pos);
                $efterpos = substr($filnavn, $pos + 1, strlen($filnavn) - ($pos + 1));
                $i = 2;
               
                echo "<p>Filen '$filnavn' eksisterer allerede i '" . $bibliotek . "' og filen omdøbes derfor til ";
               
                while (file_exists($til)) {
                    $filnavn = $foerpos . "(" . $i . ")." . $efterpos;
                    $til = $bibliotek . "/" . $filnavn;
                    $i++;
                }
                echo "'$filnavn'</p>";
            }

            if (move_uploaded_file($fra, $til)) {
                return $fil_sti;
            } else {
                echo "<p>Desværre, filen '$filnavn' kunne ikke uploades!</p>";
                return false;
            }
        }
    } else {
        echo "<p>Der er ikke vedhæftet nogen fil!</p>";
    }
}

/* Siden starter */

if ($_POST[sendknap]) {

    $fil = $_FILES["upfil"];
    upload_fil($fil);

}
?>

<form action="<?php echo $_SERVER["PHP_SELF"]; ?>" method="post" enctype="multipart/form-data">
<fieldset>
  Upload fil<br />
  <input type="file" name="upfil" size="30" /><br />
  <input type="submit" name="sendknap" value="Upload" />
</fieldset>
</form>

<?php
echo list_filer("ind");
?>


/Michal
Avatar billede michaeljuul Nybegynder
08. marts 2005 - 00:09 #4
Jeg fortæller lige hvilken navn mine Dir skal have. Det hedder ind nu. Det skal laves om til Uploads. Under dette Dir Uploads skal der være 4 Dir med navn som dir1, dir2, dir3, og dir4. Og under hvert af dem skal der være 4 andre dir med nave som. dir5, dir6, dir7 og dir8.

/Michal
Avatar billede baitianlong Nybegynder
08. marts 2005 - 00:09 #5
<form action="<?php echo $_SERVER["PHP_SELF"]; ?>" method="post" enctype="multipart/form-data">
<fieldset>
  <legend>Upload fil</legend>
  <input type="file" name="upfil" size="30" /><br />
  <select name="dir">
  <option>---v&aelig;lg dir---</option>
  <option value="1">Dir 1</option>
  <option value="2">Dir 2</option>
  <option value="3">Dir 3</option>
  <option value="4">Dir 4</option>
  </select>
  <input type="submit" name="sendknap" value="Upload" />
</fieldset>
</form>


...............

$til = $_POST['dir']."/".$filnavn;

:)
Avatar billede baitianlong Nybegynder
08. marts 2005 - 00:13 #6
<form action="<?php echo $_SERVER["PHP_SELF"]; ?>" method="post" enctype="multipart/form-data">
<fieldset>
  <legend>Upload fil</legend>
  <input type="file" name="upfil" size="30" /><br />
  <select name="overdir">
  <option>---v&aelig;lg odir---</option>
  <option value="1">Dir 1</option>
  <option value="2">Dir 2</option>
  <option value="3">Dir 3</option>
  <option value="4">Dir 4</option>
  </select>
<select name="underdir">
  <option>---v&aelig;lg udir---</option>
  <option value="1">Dir 1</option>
  <option value="2">Dir 2</option>
  <option value="3">Dir 3</option>
  <option value="4">Dir 4</option>
  </select>
  <input type="submit" name="sendknap" value="Upload" />
</fieldset>
</form>

----------

$til = "uploads/dir".$_POST['overdir']."/".$_POST['underdir']."/".$filnavn;

...sådan der :)
Avatar billede michaeljuul Nybegynder
08. marts 2005 - 00:14 #7
Tak :-) Kan du lave den så jeg får alle de dir med som jeg skrev lige før dit svar?

/Michal
Avatar billede baitianlong Nybegynder
08. marts 2005 - 00:15 #8
$til = "uploads/dir".$_POST['overdir']."/dir".$_POST['underdir']."/".$filnavn;

glemte lige en "dir"
Avatar billede baitianlong Nybegynder
08. marts 2005 - 00:17 #9
Du skifter bare tallene, hvis mapperne hedder det...

<form action="<?php echo $_SERVER["PHP_SELF"]; ?>" method="post" enctype="multipart/form-data">
<fieldset>
  <legend>Upload fil</legend>
  <input type="file" name="upfil" size="30" /><br />
  <select name="overdir">
  <option>---v&aelig;lg odir---</option>
  <option value="1">Dir 1</option>
  <option value="2">Dir 2</option>
  <option value="3">Dir 3</option>
  <option value="4">Dir 4</option>
  </select>
<select name="underdir">
  <option>---v&aelig;lg udir---</option>
  <option value="5">Dir 5/option>
  <option value="6">Dir 6</option>
  <option value="7">Dir 7</option>
  <option value="8">Dir 8</option>
  </select>
  <input type="submit" name="sendknap" value="Upload" />
</fieldset>
</form>

så skulle den vist være der
Avatar billede michaeljuul Nybegynder
08. marts 2005 - 00:18 #10
Det kan godt være det er sådan. Jeg skal lige prøve.
Kan andre så se hvad der ligger i de forskellige Dir, når de går ind under dem?
Avatar billede michaeljuul Nybegynder
08. marts 2005 - 00:20 #11
P.S. Hvor er lige mit Uploads Dir?
Avatar billede baitianlong Nybegynder
08. marts 2005 - 00:24 #12
ja, hvis du viser dem det:

<?php
echo list_filer("ind");
?>

skifter du ud med:

<?php
for($i=1;$i<5;$i++) {
  print("Overdir: ".$i);
  for($j=5;$j<9;$j++) {
      print("Underdir: ".$j);
      list_filer("dir".$i."/dir".$j);
  }
}
?>

:)
Avatar billede michaeljuul Nybegynder
08. marts 2005 - 00:25 #13
Kunne du sætte det hele sammen. Måske for flere Point ;-)
Avatar billede baitianlong Nybegynder
08. marts 2005 - 00:27 #14
det skal være samme sted som php-filen her og hedde uploads og have denne mappestruktur (efter hvad du har bedt om og jeg har kodet)

fil.php
uploads
  +dir1
    dir5
    dir6
    dir7
    dir8
  +dir2
    dir5
    dir6
    dir7
    dir8
  +dir3
    dir5
    dir6
    dir7
    dir8
  +dir4
    dir5
    dir6
    dir7
    dir8
Avatar billede michaeljuul Nybegynder
08. marts 2005 - 00:32 #15
Ja det er denne mappestruktur den skal have.
Kan du lave de færdige php filer jeg skal bruge?
Så jeg evt. kan hente dem ved dig?
Avatar billede michaeljuul Nybegynder
08. marts 2005 - 00:36 #16
Jeg bliver nød til at hoppe i seng. Så vi må forsætte imorgen aften.
Kommer på ca. kl.22 - 23
Godnat
Avatar billede baitianlong Nybegynder
08. marts 2005 - 00:42 #17
lav mapperne og prøv dette:

<?php

/* Funktioner der benyttes */

function list_filer($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å lager</li>";
    }
    return "<h2>Filer på lager til brug på TEC</h2><BR>
        <h5>Hvis du uploader noget, så send mig<BR>
        en mail up@duerher.dk:</h5><ul>" . $liste . "</ul>";
  } else {
    die("Kunne ikke åbne biblioteket: " . $bibliotek);
  }

}

function upload_fil($fil, $max_stoerrelse = 9000000, $bibliotek = "default", $filtyper_tilladt = "default") {
    if ($filtyper_tilladt == "default") {
        $filtyper_tilladt = array("image/bmp", "image/jpeg", "image/pjpeg", "image/tiff", "image/png", "image/gif", "application/pdf", "application/zip", "application/arj", "application/msword", "application/vnd.ms-excel", "application/exe", "application/x-zip-compressed", "application/octet-stream");
    }
    if ($fil["size"] > 0) {
       
        $filnavn = strtolower(ereg_replace(" ", "_", $fil["name"]));
        $fra = $fil["tmp_name"];
        $til = "uploads/dir".$_POST['overdir']."/dir".$_POST['underdir']."/".$filnavn;
        $fil_stoerrelse = filesize($fra)/10240;
        $filtype = $fil["type"];
        $fejl = 0;

        if (!in_array($filtype, $filtyper_tilladt)) {
            echo "<p>Filtypen '$filtype' er ikke tilladt. De tilladte filtyper er '" . implode("', '", $filtyper_tilladt) . "'. Filen '$filnavn' kan derfor ikke uploades!</p>";
            $fejl = 1;
        }
        if ($fil_stoerrelse > $max_stoerrelse) {
            echo "<p>Filen '$filnavn' er for stor og kan ikke uploades. Den fylder " . ceil($fil_stoerrelse) . " kb og der kan maximalt uploades $max_stoerrelse kb!</p>";
            $fejl = 1;
        }
        if ($fejl == 0) {
            if (file_exists($til)) {
               
                $pos = strrpos($filnavn, ".");
                $foerpos = substr($filnavn, 0, $pos);
                $efterpos = substr($filnavn, $pos + 1, strlen($filnavn) - ($pos + 1));
                $i = 2;
               
                echo "<p>Filen '$filnavn' eksisterer allerede i '" . $bibliotek . "' og filen omdøbes derfor til ";
               
                while (file_exists($til)) {
                    $filnavn = $foerpos . "(" . $i . ")." . $efterpos;
                    $til = $bibliotek . "/" . $filnavn;
                    $i++;
                }
                echo "'$filnavn'</p>";
            }

            if (move_uploaded_file($fra, $til)) {
                return $fil_sti;
            } else {
                echo "<p>Desværre, filen '$filnavn' kunne ikke uploades!</p>";
                return false;
            }
        }
    } else {
        echo "<p>Der er ikke vedhæftet nogen fil!</p>";
    }
}

/* Siden starter */

if ($_POST[sendknap]) {

    $fil = $_FILES["upfil"];
    upload_fil($fil);

}
?>

<form action="<?php echo $_SERVER["PHP_SELF"]; ?>" method="post" enctype="multipart/form-data">
<fieldset>
  <legend>Upload fil</legend>
  <input type="file" name="upfil" size="30" /><br />
  <select name="overdir">
  <option>---v&aelig;lg odir---</option>
  <option value="1">Dir 1</option>
  <option value="2">Dir 2</option>
  <option value="3">Dir 3</option>
  <option value="4">Dir 4</option>
  </select>
<select name="underdir">
  <option>---v&aelig;lg udir---</option>
  <option value="5">Dir 5/option>
  <option value="6">Dir 6</option>
  <option value="7">Dir 7</option>
  <option value="8">Dir 8</option>
  </select>
  <input type="submit" name="sendknap" value="Upload" />
</fieldset>
</form>


<?php
for($i=1;$i<5;$i++) {
  print("Overdir: ".$i);
  for($j=5;$j<9;$j++) {
      print("Underdir: ".$j);
      list_filer("dir".$i."/dir".$j);
  }
}
?>

Jeg har ikke lige nærlæst dit script, regner med det funger :)
Avatar billede michaeljuul Nybegynder
08. marts 2005 - 06:37 #18
Det ser sgu godt ud. MEN
Når jeg prøver og uploade til f.eks Dir1 --> Dir5
Så skriver den  "Var ikke i stand til at hente sideindholdet. "
Og når jeg trykker tilbage i min browser, så skriver den.
"Overdir: 1Underdir: 5Kunne ikke åbne biblioteket: dir1/dir5"

Har sat Chmof 777 på alle dir.

Der skulle også gerne være mulighed for at se indholdet at af de forskellige dir. Så man kan gå ind i et Dir og downloade en fil.
Avatar billede michaeljuul Nybegynder
08. marts 2005 - 22:21 #19
Så er jeg på igen :-)
Men jeg kan ikke få det til at virke :-(
Jeg har prøvet med den kode oven over, og gemt den som uploads.php

Prøv og gå ind på http://www.duerher.dk/uploads/uploads.php
Avatar billede baitianlong Nybegynder
08. marts 2005 - 22:24 #20
fiks lige denne her linie:

  <option value="5">Dir 5/option>

Men problemet er at din mappe ikke eksisterer. Du kan jo se det går fint indtil da !
Avatar billede baitianlong Nybegynder
08. marts 2005 - 22:27 #21
nå, nu har du fikset det :)

lidt kosmetik:

<?php
for($i=1;$i<5;$i++) {
  print("<h3>Overdir: ".$i."</h3><br>\n");
  for($j=5;$j<9;$j++) {
      print("<b>Underdir: ".$j."</b><br>\n");
      list_filer("dir".$i."/dir".$j);
  }
}
?>
Avatar billede michaeljuul Nybegynder
08. marts 2005 - 22:28 #22
Hvor er det lige jeg skal sætte <option value="5">Dir 5/option>
ind?
Avatar billede michaeljuul Nybegynder
08. marts 2005 - 22:29 #23
Er det muligt jeg kunne ringe til dig?
Avatar billede michaeljuul Nybegynder
08. marts 2005 - 22:47 #24
Har ændret linjen. <option value="5">Dir 5/option> :-)
Avatar billede michaeljuul Nybegynder
08. marts 2005 - 23:06 #25
Forsvandt du helt? ;-)
Avatar billede michaeljuul Nybegynder
11. marts 2005 - 00:15 #26
slut. Fik det ikke løst
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