Avatar billede soundwave Nybegynder
17. april 2005 - 21:27 Der er 4 kommentarer og
1 løsning

Forkert sti til billedupload

Jeg har et side i php til upload af billeder. Det er muligt at vælge mellem to mapper filen skal uploades til.
Problemet er bare at filen IKKE bliver uploadet til mapperne, men til roden (altså: /).
Hvad gør jeg forkert? (variablen hedder "$mappe")

Koden ser således ud i de to filer:

Uploadform.php:
---------------------

<?php
include_once('inc.limited_access.php');
include('header.inc')
?>
<body>

<?php
if(ini_get("file_uploads") == 1)
?>
<form enctype="multipart/form-data" action="upload.php" method="post">
    <b><font face="Arial, Helvetica, sans-serif">Max. upload p&aring; en gang
    er sat til <?php echo min(ini_get("post_max_size"), ini_get("upload_max_filesize")); ?>b.
    i php.ini</font></b><br>
    <br>
<table><tr>

      <td>V&aelig;lg en fil til upload:<br>
<input name="singlefile" type="file" class="input" size="40">
      <br>
      <br>
      <br>
      Upload til:<br>
     
          <input type="hidden" name="mappe" value="$mappe">
          <label>
          <input type="radio" name="mappe" value="worldtourlp/billeder-l/billeder/">
          Lasse</label>
          <br>
          <label>
          <input type="radio" name="mappe" value="worldtourlp/billeder-p/billeder/">
          Peter</label>
          <br>
        <br>

        <input type="submit" value="Upload" class="submit">
<br>
<br>
        Billedfiler som accepteres:<br>
        "gif", "jpg" og "png"</form></td>

</tr><tr>

    <td><hr><b>Flere filer p&aring; samme tid:</b></td>

</tr><tr>

    <td><form enctype="multipart/form-data" action="upload.php" method="post">
V&aelig;lg en eller flere filer til upload:<br>
<input name="upfile[]" type="file" size="48" class="input"><br>
<input name="upfile[]" type="file" size="48" class="input"><br>
<input name="upfile[]" type="file" size="48" class="input"><br>
<input name="upfile[]" type="file" size="48" class="input"><br>
<input name="upfile[]" type="file" size="48" class="input">
  <br>
  <br>
  Upload til:<br>
 
      <input type="hidden" name="mappe" value="$mappe">
      <label>
      <input type="radio" name="mappe" value="worldtourlp/billeder-l/billeder/">
      Lasse</label>
      <br>
      <label>
      <input type="radio" name="mappe" value="worldtourlp/billeder-p/billeder/">
      Peter</label>
      <br>
      <br>
      <input type="submit" value="Upload" class="submit">
    </td>

</tr></table>

</form><?php
}else{
echo"Tilsyneladende er filupload ikke tilladt på denne server?<br>\n";
echo"Pr&oslash;v evt. at fjerne den f&oslash;rste if-s&aelig;tning i denne fil.";
}
?>
<br>
<div class="hr"></div>
<a href="logbog/admin/administration.php" target="_self">Administration</a> | <a href="logbog/admin/index.php?f=loggedout">Log ud</a>


</body></html>


Upload.php:
--------------------

<?php
include_once('inc.limited_access.php');
include('header.inc')
?>
<body>

<center>

<table><tr>
<td><?php

//hmm, lidt kode til "rigtig lukning" af html'en ved fejl
$stop = "</td>\n</tr></table>\n</center></body></html>";

//stien, hvortil filer skal uploades, her et subdir til roden af domænet   
$dist = $_SERVER["DOCUMENT_ROOT"] ."/". $mappe ."/";

//Er det en enkelt fil? (singlefile)
if(isset($_FILES["singlefile"])) {

//til brug for info om filtyper
$str1 = $_FILES["singlefile"]["name"];
$str2 = $_FILES["singlefile"]["size"];
$str3 = $_FILES["singlefile"]["type"];


//Filer som kan uploades
$filetyper = array("image/gif", "text/html", "text/plain", "image/jpeg", "image/pjpeg", "image/png", "image/x-png");

//Tjek om der er en fil
    if ($_FILES["singlefile"]["name"] == "") {
echo"Ingen fil valgt! <br>
- <a href=\"uploadform.php\">Tilbage</a> -";
echo $stop;
exit;
    }

//Tjek om filen er i array'et af tiladte filtyper
    if (!in_array($_FILES["singlefile"]["type"], $filetyper)) {
echo "Filen kan ikke uploades.<br>\n<b>". $str3 ."</b> er ikke tilladt for upload! <br>
- <a href=\"uploadform.php\">Tilbage</a> -";
echo $stop;
exit;
    }


        //se http://dk.php.net/manual/en/function.is-uploaded-file.php for "is_uploaded_file"       
        if(is_uploaded_file($_FILES["singlefile"]["tmp_name"])) {

    //Flyt filen fra upload-tmp til et dir. Husk at ændre "$dist" ovenover så det passer med din server :O)
    move_uploaded_file($_FILES["singlefile"]["tmp_name"], $dist . $_FILES["singlefile"]["name"]);
    echo "<br>";
    echo "&Oslash;nsket fil til upload:<p>\n";
    echo "<b>Navn:</b> ". $str1 .",<br>\n";
    echo"<b>St&oslash;rrelse:</b> ". $str2 ." bytes,<br>\n";
    echo"<b>Filtype:</b> ". $str3 ."<br><br>\n";
    echo "- <a href=\"uploadform.php\">Tilbage</a> -";

        }else{
        echo"Upload til serveren skete IKKE!";
    }

}

//FLERE FILER PÅ SAMME TID FLERE FILER PÅ SAMME TID

if (isset($_FILES["upfile"])) {

echo "<br>";
echo"&Oslash;nskede filer til upload:<p>\n";

$antal = 0;

//Find antallet af filer til upload med en for-løkke
for($i = 0; $i < count($_FILES["upfile"]["name"]); $i++) {

    if ($_FILES["upfile"]["name"][$i] !="") {
    //Læg en til $antal for hver fil.
    $antal++;
        if(is_uploaded_file($_FILES["upfile"]["tmp_name"][$i])) {

    move_uploaded_file($_FILES["upfile"]["tmp_name"][$i], $dist . $_FILES["upfile"]["name"][$i]);

    //til brug for info om filtyper
    $str1 = $_FILES["upfile"]["name"][$i];
    $str2 = $_FILES["upfile"]["size"][$i];
    $str3 = $_FILES["upfile"]["type"][$i];

    echo "<b>Navn:</b> ". $str1 .", <b> st&oslash;rrelse:</b> ". $str2 ." bytes, <b>filtype:</b> ". $str3 ."<br>\n";

        }else{

    echo"Upload til serveren skete IKKE!";

            }
        }
    }

if($antal < 1) { //Hvis der ingen filer er valgt
echo"V&aelig;lg en eller flere filer til upload!";
echo "<br>";
echo"- <a href=\"uploadform.php\">Tilbage</a> -";
    }else{
echo "<br>";
echo"- <a href=\"uploadform.php\">tilbage</a> -";
    }

}
?></td>

</tr></table>

</center>

</body></html>
Avatar billede busschou Praktikant
17. april 2005 - 21:33 #1
I din form har du tre felter ved navn mappe
Det går ikke for så vælger den jo det først
Prøv fjerne det du har som hidden
Der hvor du laver stien skal du jo "hente" variablen så prøv rette det til
$dist = $_SERVER["DOCUMENT_ROOT"] ."/". $_POST['mappe'] ."/";
Avatar billede soundwave Nybegynder
17. april 2005 - 21:37 #2
Skal jeg fjerne hele linjen med hidden? Ved den så hvad der er $mappe?
Avatar billede sukos Juniormester
17. april 2005 - 21:39 #3
Ja, fjern dine hidden felter.

Og så kan du bruge:

if (isset($_FILES["upfile"], $_POST["mappe"])) {


eller lade en af dine radiobuttons være checked, så der altid er sat $_POST["mappe"]
Avatar billede soundwave Nybegynder
17. april 2005 - 21:44 #4
Nu virker det! Jeg ændrede det du sagde jeg skulle i upload.php, og så fjernede jeg "mappe" fra "name"-feltet i uploadform.php

Tak for hjælpen.
-->busschou
smid et svar så du kan få dine points...
Avatar billede busschou Praktikant
17. april 2005 - 21:44 #5
dejlig det virker :o)
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