Avatar billede berner5300 Nybegynder
07. juni 2011 - 16:11 Der er 6 kommentarer og
1 løsning

Upload til forskellige mapper

heej eksperten.

Er der nogen der kan fortælle mig hvordan man kan lave et uploading script, hvor man fx har en
<select>
  <option>1</option>
  <option>2</option>
  <option>3</option>
  <option>4</option>
</select>

og man har 4 mapper med navnene 1, 2, 3 og 4.
Hvordan kan man bruge <select> til at vælge hvilken mappe, filen man vil upload, skal ligge sig ind i?


--------------------------------------------
index.php

<html>
<body>

<center>
<form action="upload.php" method="post" enctype="multipart/form-data">
    <fieldset>
        <label for="file">Fil navn:</label>
        <input type="file" name="file" id="file" />
        <input type="submit" name="submit" value="Upload" />
    </fieldset>
</form>
</center>

</body>
</html>

--------------------------------------------
upload.php

<?php

$name = $_FILES["file"]["name"];
$type = $_FILES["file"]["type"];
$size = $_FILES["file"]["size"];
$error = $_FILES["file"]["error"];
$temp = $_FILES["file"]["tmp_name"];

if ((($type == "image/gif")
|| ($type == "image/jpeg")
|| ($type == "image/png")
|| ($type == "image/pjpeg"))
&& ($size < 20000)) {
    if ($error > 0) {
        echo "Tilbage kode: " . $error . "<br />";
    } else {
        echo "Fil navn: " . $name . "<br />";
        echo "Type: " . $type . "<br />";
        echo "Størrelse: " . ($size / 1024) . " Kb<br />";
        if (file_exists("image/" . $name)) {
            echo $name . " findes allerede. Se billeder <a href='image/'>her</a>!";
        } else {
            move_uploaded_file($temp, "image/" . $name); ?>
            Dit billed kan ses <a href="java script:void(0)" onclick="window.open('images/<?php echo $name; ?>','velkommen','width=700,height=550')">her</a>!<p>
            Tilbage til <a href='index.php'>forsiden</a>!
            <?php
        }
    }
} elseif ($type == "audio/mp3") {
    if ($error > 0) {
        echo "Tilbage kode: " . $error . "<br />";
    } else {
        echo "Fil navn: " . $name . "<br />";
        echo "Type: " . $type . "<br />";
        echo "Størrelse: " . ($size / 1024) . " Kb<br />";
        if (file_exists("music/" . $name)) {
            echo $name . " findes allerede. Se musik <a href='music/'>her</a>!";
        } else {
            move_uploaded_file($temp, "music/" . $name); ?>
            Din sang kan høres <a href="java script:void(0)" onclick="window.open('music/<?php echo $name; ?>','velkommen','width=700,height=550')">her</a>!<p>
            Tilbage til <a href='index.php'>forsiden</a>!
            <?php
        }
    }
} else {
    echo "Ugyldig filformat<p> Prøv igen <a href='index.php'>her</a>!";
}
?>
07. juni 2011 - 17:56 #1
Jeg er ikke helt med på hvad du vil opnå.  Som din kode er nu ser det ud til at du gemmer en uploaded image fil under image/$name hvor $name er filens navn og du du gemmer en uploaded music fil under music/$name.  Vil du så have, at hvis du vælger 1 skal en image fil gemmes under 1/image/$name o.s.v.?

I så fald ville det nemmeste nok være at putte valget af 1/2/3/4 direkte i index.php, for eksempel således (ikke testet):

<body>
<center>
<form action="upload.php" method="post" enctype="multipart/form-data">
  <label for="file">Fil navn:</label>
  <input type="file" name="file" id="file" /><br />
  <select name='mappe'>
    <option value='1'>1</option>
    <option value='2'>2</option>
    <option value='3'>3</option>
    <option value='4'>4</option>
  </select>
  <input type="submit" name="submit" value="Upload" />
</form>
</center>
</body>

og så starte upload.php med:

<?php
$mappe = $_POST['mappe'];
$name = $_FILES["file"]["name"];
$type = $_FILES["file"]["type"];
o.s.v.

?>

og så udvider du
move_uploaded_file($temp, "image/" . $name);
til move_uploaded_file($temp, $mappe . "/image/" . $name);

og tilsvarende
til move_uploaded_file($temp, $mappe . "/music/" . $name);
Avatar billede berner5300 Nybegynder
07. juni 2011 - 19:44 #2
Det der er uploaded til siden er:

1 - mappe
2 - mappe
3 - mappe
4 - mappe
index.php
upload.php

Det jeg gerne vil have er at man kan vælge 1, 2, 3 og 4, altså hvilken mappe den skal gemme i, også den ligger filen ind i forhold vis den mappe man har valgt
07. juni 2011 - 20:37 #3
Vi kommunikerer vist ikke.  Måske er det mig der er tumpet idag. 

Du siger: "Det der er uploaded til siden er: 1 - mappe.." o.s.v.  Men du viser ikke nogen kode om hvordan 1 - mappe o.s.v. oploades. 

Ifølge den kode du viser for siden index.php får du på den side en formular hvor du kan browse for en fil, og det er denne fil der uploades ved at trykke på Upload.  Når du har uploaded filen kalder din kode siden upload.php, og der dannes variablerne $name, $type, $temp, o.s.v.  Er vi enige så langt? 

Hvis den fil du vælger at uploade hedder, for eksempel, C://klodshans.jpeg, så får variabelen $name værdien klodshans.jpeg.  Variabelen $temp får det midlertidige navn systemet selv giver filen, for eksempel abcde12345xz. 

Koden "move_uploaded_file($temp, "image/" . $name)" er så en instruks om at tage filen med det midlertidige navn i $temp og gemme den som "image/$name", i dette eksempel i mappen image under navnet klodshans.jpg.  Er vi også enige om det?

Hvad skal der så ske med mapperne
"1 - mappe", "2 - mappe" o.s.v?  Skal den uploadede fil der nu sidder i "image/klodshans.jpg" gemmes for eksempel i mappen "1 - mappe"?  Eller hvad er det du vil opnå? 

Hvis jeg har misforstået det hele, så forklar mig hvad sammenhængen er mellem den kode du viser og "1 - mappe" o.s.v.
Avatar billede berner5300 Nybegynder
07. juni 2011 - 20:47 #4
Jeg har fået dit første svar til at virke. :)

Du må gerne skrive et svar :)
07. juni 2011 - 20:51 #5
Svar fra mig.
Avatar billede wanze Nybegynder
08. juni 2011 - 04:26 #6
Det Christian anbefaler er uhyre usikkert - forestil dig, hvad der ville ske, hvis en person angav noget andet end 1, 2, 3 eller 4 som mappe - de ville kunne uploade en fil et hvilket som helst sted på din server, endda overskrive eksisterende filer!

Du bliver nødt til at validere at $mappe rent faktisk er noget du godkender, dvs. om $mappe enten er 1, 2, 3 eller 4. Den nemmeste måde at gøre det på er:
if (in_array($mappe,array(1,2,3,4))) {
...
}
Avatar billede repox Seniormester
08. juni 2011 - 09:10 #7
#6
+1 herfra.

Der skal implementeres en god mængde validering af brugerinput, før at noget som det kan publiceres til brugerne.
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