Avatar billede krydset Nybegynder
17. marts 2004 - 22:41 Der er 20 kommentarer og
1 løsning

Multi upload

Hejsa, jeg kunne godt tænke mig at uploade flere filer på en og har lige lavet det her enkelte script men det uploader kun 1 af gangen.

Kan nogen hjælpe med at få det til at uploade flere på en gang, ved slet ikke hvor jeg k´skal starte

<?php
    if(isset($_POST['upload'])) {
        //Udskriver lidt info om filen
        echo $_FILES['upfile']['name'];    //Filens navn
        echo "<br>";
        echo $_FILES['upfile']['size'];    //Filens størrelse
        echo "<br>";
        echo $_FILES['upfile']['type'];    //File type eks. jpg, gif osv
        echo "<br>";
        echo $_FILES['upfile']['tmp_name']; //Filens temp navn
       
        //Stien der skal uploades til
        $sti = "c:\www\billeder\\";
       
        //
        echo "<br>";
        //Vælger det tilfældige som filen skal ende med at hedder
        $rand = rand(10, 200000000);
       
       
        if(is_uploaded_file($_FILES['upfile']['tmp_name'])) {
            //Flytter filen fra tmp dir og æigger sig i det valgte dir som $sti definere
            move_uploaded_file($_FILES['upfile']['tmp_name'], $sti . $_FILES['upfile']['name']);
           
            //Renamer filen til noget tilfældigt.
            rename("c:\www\billeder\\".$_FILES['upfile']['name']."", "c:\www\billeder\\" .$rand.$_FILES['upfile']['name']."");
        }
    }
    ?>
   
    <form enctype="multipart/form-data" action="upload1.php" method="post">
    <input type="file" name="upfile">
    <br>
    <input type="submit" name="upload" value="upload">
    </form>

Mvh Krydset
Avatar billede avminarm Juniormester
17. marts 2004 - 22:56 #1
kig på www.showsource.dk der har steffen (sukos) lavet et par uploadscripts - gode pg nemme at forstå
Avatar billede krydset Nybegynder
17. marts 2004 - 23:02 #2
Har fundet et derinde, men jeg har nok løbende lidt spm omkring det f.eks.

hvorfor er < den her i denne her linie

for($i = 0; $i < count($_FILES["upfile"]["name"]); $i++) {
Avatar billede avminarm Juniormester
17. marts 2004 - 23:09 #3
det er et "mindre end"-tegn, så længe $i er mindre en antallet af uploadede filer vil for-løkken køre
Avatar billede krydset Nybegynder
17. marts 2004 - 23:22 #4
Okay

Nu har jeg skrevet mit eget om men jeg fdet uploader kun en fil der hedder array, hvorfor gør den det

    <?php
    if(isset($_POST['upload'])) {
       
        $antal = 0;

       
        //Stien der skal uploades til
        $sti = "c:\www\billeder\\";
       
        //Vælger det tilfældige som filen skal ende med at hedder
        $rand = rand(10, 200000000);       
       
        //Find antallet af filer der skal uploades
        for($i = 0; $i < count($_FILES['upfile']['name']); $i++) {
       
            if($_FILES['upfile']['name'][$i] !="") {
                //læg en til $antal
                $antal++;
               
                if(is_uploaded_file($_FILES['upfile']['tmp_name'][$i])) {
                   
                    //Flytter filen fra tmp dir og æigger sig i det valgte dir som $sti definere
                    move_uploaded_file($_FILES['upfile']['tmp_name'][$i], $sti . $_FILES['upfile']['name']);
           
                    //Renamer filen til noget tilfældigt.
                    #rename("c:\www\billeder\\".$_FILES['upfile']['name'][$i]."", "c:\www\billeder\\" .$rand.$_FILES['upfile']['name']."");
                } else {
                    echo "UPLOAD ERROR";
                }
            }
        }
    }

       
       
       

       
    ?>
   
    <form enctype="multipart/form-data" action="upload1.php" method="post">
    <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>
    <input name="upload" type="submit" value="upload" size="48">
    </form>
Avatar billede sukos Juniormester
18. marts 2004 - 06:41 #5
//Flytter filen fra tmp dir og æigger sig i det valgte dir som $sti definere
                    move_uploaded_file($_FILES['upfile']['tmp_name'][$i], $sti . $_FILES['upfile']['name'][$i]);
         
                    //Renamer filen til noget tilfældigt.
                    #rename("c:\www\billeder\\".$_FILES['upfile']['name'][$i]."", "c:\www\billeder\\" .$rand.$_FILES['upfile']['name'][$i]."");
Avatar billede krydset Nybegynder
18. marts 2004 - 07:17 #6
det er fordi jeg får fejl ved renaming, Og istedet for bare at vise et par linier af det jeg har skrevet, så prøv at skriv lidt osse
Avatar billede avminarm Juniormester
18. marts 2004 - 09:19 #7
drop din rename og gør sådan:

move_uploaded_file($_FILES['upfile']['tmp_name'][$i], $sti . $rand . $_FILES['upfile']['name'][$i]);
Avatar billede krydset Nybegynder
18. marts 2004 - 10:13 #8
Takker avminarm, nu vi lige siger avminarm har lige fået taget blodprøve og hun stak bare max forkert så ja avminarm :-O

Men jeg takker

Ligger lige det færsige script her så andre osse lan få glæde af det hvis de støder ind i den her tråd

*-----------------------------------------------------------------------------------*
    <?php
    if(isset($_POST['upload'])) {
       
        $antal = 0;

       
        //Stien der skal uploades til
        $sti = "c:\www\billeder\\";
       
        //Vælger det tilfældige som filen skal ende med at hedder
        $rand = rand(10, 200000000);       
       
        //Find antallet af filer der skal uploades
        for($i = 0; $i < count($_FILES['upfile']['name']); $i++) {
       
            if($_FILES['upfile']['name'][$i] !="") {
                //læg en til $antal
                $antal++;
               
                if(is_uploaded_file($_FILES['upfile']['tmp_name'][$i])) {
                   
                    //Flytter filen fra tmp dir og æigger sig i det valgte dir som $sti definere
                    move_uploaded_file($_FILES['upfile']['tmp_name'][$i], $sti . $rand . $_FILES['upfile']['name'][$i]);
           
                   
                } else {
                    echo "UPLOAD ERROR";
                }
            }
        }
    }

       
       
       

       
    ?>
   
    <form enctype="multipart/form-data" action="upload1.php" method="post">
    <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>
    <input name="upload" type="submit" value="upload" size="48">
    </form>
Avatar billede krydset Nybegynder
18. marts 2004 - 10:25 #9
Lige et spm til hvordan kan jeg lave tjek på om der virkelig er valgt en fil

<?php

if(isset($_POST['upload'])) {
       
    if($_FILES['upfile']['tmp_name'] == "") {
        echo "du skal vælge en fil";
    } else {
       
        $antal = 0;
        //Stien der skal uploades til
        $sti = "c:\www\billeder\\";
       
        //Vælger det tilfældige som filen skal ende med at hedder
        $rand = rand(10, 200000000);       
       
        //Find antallet af filer der skal uploades
        for($i = 0; $i < count($_FILES['upfile']['name']); $i++) {
       
        if($_FILES['upfile']['name'][$i] !="") {
            //læg en til $antal
            $antal++;
               
            if(is_uploaded_file($_FILES['upfile']['tmp_name'][$i])) {
                   
                //Flytter filen fra tmp dir og æigger sig i det valgte dir som $sti definere
                move_uploaded_file($_FILES['upfile']['tmp_name'][$i], $sti . $rand . $_FILES['upfile']['name'][$i]);
            } else {
                echo "UPLOAD ERROR";
            }
        }
        }
    }
}
?>
   
<form enctype="multipart/form-data" action="multi_upload.php" method="post">
    <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>
    <input name="upload" type="submit" value="upload" size="48">
</form>
Avatar billede krydset Nybegynder
18. marts 2004 - 10:26 #10
if($_FILES['upfile']['tmp_name'] == "") {

den virker ikke, den siger ikke vælg en fil selvom felterne er tomme
Avatar billede avminarm Juniormester
18. marts 2004 - 13:15 #11
prøv med if(isset($_FILES['upfile']['tmp_name']))
Avatar billede krydset Nybegynder
18. marts 2004 - 13:20 #12
Nope
Avatar billede krydset Nybegynder
18. marts 2004 - 13:30 #13
Du skulle vel ikke have mere i ærmet
Avatar billede avminarm Juniormester
18. marts 2004 - 13:43 #14
hov - du skal vis bruge $_FILES['upfile']['name'] ikke temp_name
Avatar billede krydset Nybegynder
18. marts 2004 - 13:46 #15
Nu siger den helet tiden der ikke er filer med
Avatar billede avminarm Juniormester
18. marts 2004 - 14:11 #16
prøv med empty($_FILES['upfile']['tmp_name'])
Avatar billede krydset Nybegynder
18. marts 2004 - 14:38 #17
Virker heller ikke :-O
Avatar billede avminarm Juniormester
18. marts 2004 - 15:09 #18
sikke noget - jeg kigger lig på noget jeg selv har bikset sammen i aften, men tjekker man egentlig ikke her om det er noget i filen?

//Find antallet af filer der skal uploades
        for($i = 0; $i < count($_FILES['upfile']['name']); $i++) {
       
        if($_FILES['upfile']['name'][$i] !="") { // <--- altså her
            //læg en til $antal
            $antal++;
Avatar billede avminarm Juniormester
18. marts 2004 - 15:11 #19
og (halooo tænker jeg lige ;o]) hvis upfile[] er tom - så er der vel ikke noget med over i arrayet $_FILES
Avatar billede sukos Juniormester
18. marts 2004 - 16:05 #20
Jow, hvis feltet er tomt, "tælles" det ikke med ved upload.
Men $i tager også tomme felter med.
Derfor to if'er
Skulle jo så nok være:

//Find max-antal af felter med evt. fil til upload
        for($i = 0; $i < count($_FILES['upfile']['name']); $i++) {
Avatar billede krydset Nybegynder
18. marts 2004 - 20:43 #21
Har fundet løsningen

if ($_FILES['upfile']['name'][0] || $_FILES['upfile']['name'][1] || $_FILES['upfile']['name'][2] || $_FILES['upfile']['name'][3]) {
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