Avatar billede nikksen Nybegynder
18. september 2006 - 16:10 Der er 21 kommentarer og
1 løsning

Multiple billede-upload

Hejsa, jeg ved godt at dette er besvaret før, men jeg har ikke rigtigt kunne få det til at fungere i mit script. Er der nogen der kan hjælpe mig med at indføre multi-upload i dette script:

if(is_uploaded_file($HTTP_POST_FILES['upfile']['tmp_name'])) {
                        $dist = $HTTP_SERVER_VARS['DOCUMENT_ROOT']."/images/userpics/";
                        $billede = $HTTP_POST_FILES['upfile']['name'];

                        $extension = substr($HTTP_POST_FILES['upfile']['name'], -3);
                        $filnavn = date("YmdHis").".".$extension;

                        //Hvis der skal slettes et billede bruges denne formular
                        //unlink($_SERVER["DOCUMENT_ROOT"] ."/images/". $_POST["billednavn"]);}

                        if($extension == "jpg" || $extension == "png" || $extension == "gif") {
                            move_uploaded_file($HTTP_POST_FILES['upfile']['tmp_name'], $dist.$filnavn);
                            $besked = "$billedeurl er blevet uploadet med succes!";
                        }else{
                            $filnavn = "";
                            $billede = "";
                        }
                    }

                    $dato = $_REQUEST['dato'];

                    $kategori        = checkInput($kategori, '', '', "javascript", false);
                    $dato            = checkInput($dato, '', '', "javascript", false);
                    $udgiver            = checkInput($udgiver, '', '', "javascript", false);
                    $titel            = checkInput($titel, '', '', "javascript", false);
                    $beskrivelse    = checkInput($beskrivelse, '', 'yes', "javascript", false);
                    $rider            = checkInput($rider, '', '', "javascript", false);
                    $fotograf        = checkInput($fotograf, '', '', "javascript", false);
                    $sted            = checkInput($sted, '', '', "javascript", false);

                    // Indsættes i database til retning af billede
                    $db->query("INSERT INTO oak_billeder VALUES ('', '$kategori', '$dato', '$udgiver', '$filnavn', '$titel', '$beskrivelse', '$rider', '$fotograf', '$sted')");
Avatar billede coderdk Praktikant
18. september 2006 - 16:18 #1
Du kan måske tilpasse dette script:

<?php

    $targetDir = 'ud/'; // Replace with your output directory, must be writable!

    if ( !empty( $_FILES['ufile'] ) )
    {
        $files = $_FILES['ufile'];
        $n = count( $files );
        for ( $i = 0; $i < $n; $i++ )
        {
            if ( is_uploaded_file( $files['tmp_name'][$i] ) )
            {
                if ( move_uploaded_file( $files['tmp_name'][$i], $targetDir . basename( $files['name'][$i] ) ) )
                {
                    echo "Uploaded " . $files['name'][$i] . "...<br>";
                }
                else
                {
                    echo "Failed uploading " . $files['name'][$i] . "...<br>";
                }               
            }
        }       
    }

?>
<form enctype="multipart/form-data" method="post">
    <input type="file" name="ufile[]"><br>
    <input type="file" name="ufile[]"><br>
    <input type="file" name="ufile[]"><br>
    <input type="file" name="ufile[]"><br>
    <input type="file" name="ufile[]"><br>
    <input type="file" name="ufile[]"><br>
    <input type="submit" value="Upload">
</form>
Avatar billede nikksen Nybegynder
18. september 2006 - 16:22 #2
hm ja, jeg kan lige prøve at kigge på det.. tak
Avatar billede nikksen Nybegynder
18. september 2006 - 17:51 #3
nej, jeg kan ikke lige gennemskue hvad der er hvad. jeg er ny i php.. mit script er forresten blevet ændret siden sidst, så hvis der er nogen der stadigvæk gider at give sig tid til at modificere det til et multi-upload script så er det her:


if(is_uploaded_file($HTTP_POST_FILES['upfile']['tmp_name'])) {
    $dist = $HTTP_SERVER_VARS['DOCUMENT_ROOT']."/nikk/images/galleripics/";
    $billede = $HTTP_POST_FILES['upfile']['name'];

    $extension = substr($HTTP_POST_FILES['upfile']['name'], -3);
    $filnavn = date("YmdHis").".".$extension;

    //Hvis der skal slettes et billede bruges denne formular
    //unlink($_SERVER["DOCUMENT_ROOT"] ."/images/". $_POST["billednavn"]);}

    if($extension == "jpg" || $extension == "png" || $extension == "gif") {
        move_uploaded_file($HTTP_POST_FILES['upfile']['tmp_name'], $dist.$filnavn);
        $besked = "$billedeurl er blevet uploadet med succes!";
    }else{
        $filnavn = "";
        $billede = "";
    }
}

$billededato = $_REQUEST['billededato'];

$billedested        = checkInput($billedested, '', '', "javascript", false);
$billededato            = checkInput($billededato, '', '', "javascript", false);
$billedetitel            = checkInput($billedetitel, '', '', "javascript", false);
$billedebeskrivelse    = checkInput($billedebeskrivelse, '', 'yes', "javascript", false);
$billedeuge            = checkInput($billedeuge, '', '', "javascript", false);

// Indsættes i database til retning af billede
$db->query("INSERT INTO nikksite_billeder VALUES ('', '$billedested', '$billededato', '$filnavn', '$billedetitel', '$billedebeskrivelse', '$billedeuge')");

$site_body = "<font class=txt><p align=center><b>Dit billede er tilføjet!</b></p></font></font>";
       
redirect('index.php?action=admin&sub=galleri', 4, X_REDIRECT_JS);


Og dertil følgende upload-formular:


<tr>
<td bgcolor="$altbg2" class="tablerow" align="center"><input type="text" name="billededato" value="$datoen" size="10" /></td>
<td bgcolor="$altbg2" class="tablerow" align="center"><select size="1" name="billedested">
  <option value="valdisere0607">Val d'Isere 06/07</option>
  <option value="alpedhuez0405">Alpe d'Huez 04/05</option>
</select></td>
<td bgcolor="$altbg2" class="tablerow" align="center"><input name="upfile" type="file" size="20" style="width: 200px"></td>
<td bgcolor="$altbg2" class="tablerow" align="center"><input type="text" name="billedetitel" size="15" /></td>
<td bgcolor="$altbg2" class="tablerow" align="center"><textarea rows="2" name="billedebeskrivelse" cols="20"></textarea></td>
<td bgcolor="$altbg2" class="tablerow" align="center"><input type="text" name="billedeuge" value="$ugenr" size="1" /></td>
</tr>


Jeg håber MEGET er der er nogen som kan hjælpe. Jeg er sgu' gået lidt kold i det..
Avatar billede nikksen Nybegynder
18. september 2006 - 18:44 #4
Jeg vil gerne give ekstra point op til de 200 til den der får det her til at fungere!
Avatar billede coderdk Praktikant
18. september 2006 - 21:01 #5
Prøv:

<?php

    $targetDir = $_SERVER['DOCUMENT_ROOT']."/nikk/images/galleripics/";

    $besked = "";
    if ( !empty( $_FILES['upfile'] ) )
    {
        $files = $_FILES['upfile'];
        $n = count( $files );
        for ( $i = 0; $i < $n; $i++ )
        {
            if ( is_uploaded_file( $files['tmp_name'][$i] ) )
            {
                $billede = $files['name'][$i];
                $extension = substr( $files['name'][$i], -3 );
                $filnavn = date("YmdHis").".".$extension;
                if ( ($extension == "jpg" || $extension == "png" || $extension == "gif")
                    && move_uploaded_file( $files['tmp_name'][$i], $targetDir . $filnavn ) ) )
                {
                    $besked .= "$billedeurl er blevet uploadet med succes!<br>";
                }
                else
                {
                    $filnavn = "";
                    $billede = "";
                }             
            }
        }     
    }
   
    $billededato = $_REQUEST['billededato'];
   
    $billedested        = checkInput($billedested, '', '', "javascript", false);
    $billededato            = checkInput($billededato, '', '', "javascript", false);
    $billedetitel            = checkInput($billedetitel, '', '', "javascript", false);
    $billedebeskrivelse    = checkInput($billedebeskrivelse, '', 'yes', "javascript", false);
    $billedeuge            = checkInput($billedeuge, '', '', "javascript", false);

    // Indsættes i database til retning af billede
    $db->query("INSERT INTO nikksite_billeder VALUES ('', '$billedested', '$billededato', '$filnavn', '$billedetitel', '$billedebeskrivelse', '$billedeuge')");
   
    $site_body = "<font class=txt><p align=center><b>Dit billede er tilføjet!</b></p></font></font>";
         
    redirect('index.php?action=admin&sub=galleri', 4, X_REDIRECT_JS);

?>

Og dertil følgende upload-formular:


<tr>
<td bgcolor="$altbg2" class="tablerow" align="center"><input type="text" name="billededato" value="$datoen" size="10" /></td>
<td bgcolor="$altbg2" class="tablerow" align="center"><select size="1" name="billedested">
  <option value="valdisere0607">Val d'Isere 06/07</option>
  <option value="alpedhuez0405">Alpe d'Huez 04/05</option>
</select></td>
<td bgcolor="$altbg2" class="tablerow" align="center">
<input name="upfile[]" type="file" size="20" style="width: 200px"><br>
<input name="upfile[]" type="file" size="20" style="width: 200px"><br>
<input name="upfile[]" type="file" size="20" style="width: 200px"><br>
<input name="upfile[]" type="file" size="20" style="width: 200px"><br>
<input name="upfile[]" type="file" size="20" style="width: 200px"><br>
<input name="upfile[]" type="file" size="20" style="width: 200px"><br>
<input name="upfile[]" type="file" size="20" style="width: 200px"><br>
</td>
<td bgcolor="$altbg2" class="tablerow" align="center"><input type="text" name="billedetitel" size="15" /></td>
<td bgcolor="$altbg2" class="tablerow" align="center"><textarea rows="2" name="billedebeskrivelse" cols="20"></textarea></td>
<td bgcolor="$altbg2" class="tablerow" align="center"><input type="text" name="billedeuge" value="$ugenr" size="1" /></td>
</tr>
Avatar billede nikksen Nybegynder
18. september 2006 - 21:09 #6
Cool, men umiddelbart tror jeg ikke at formularen er ok.. jeg skulle gerne kunne skrive forskellige beskrivelser osv. til hvert billede der uploades. Ud fra ovenstående for 7 billeder der uploades de samme data ikke sandt?
Avatar billede coderdk Praktikant
18. september 2006 - 21:13 #7
det er korrekt ;P
Avatar billede nikksen Nybegynder
18. september 2006 - 21:16 #8
så hvordan klarer jeg den? :)

tilføjer jeg bare [] til de andre også?
Avatar billede nikksen Nybegynder
18. september 2006 - 21:26 #9
aj, det prøvede jeg lige med bare 2 uploadningsmuligheder..

1) Den uploader kun 1 billede
2) Den tilføjer også kun 1 billede til db'en og alle felter, udenom 'billede', får bare værdien "Array" istedet.
Avatar billede coderdk Praktikant
18. september 2006 - 22:26 #10
Du kan bruge [] til de andre også, men så skal det hele ind i det for()-loop, og du skal tilgå dem med f.eks. $_POST['billedetitel'][$i] osv
Avatar billede nikksen Nybegynder
18. september 2006 - 22:32 #11
ok det prøver jeg, men hvordan får jeg den til at uploade alle billederne? det vil den nemlig ikke..
Avatar billede nikksen Nybegynder
18. september 2006 - 22:43 #12
eh, du får alle de point du vil have hvis du kan gøre det for mig. jeg aner ikke hvor jeg skal tage starte.. jeg troede ikke at det var så besværligt. :-/
Avatar billede coderdk Praktikant
18. september 2006 - 22:45 #13
Det vil den sikkert, men det sker i samme sekund, derfor bliver den overskrevet - Det er i hvert tilfælde mit gæt ;)
Avatar billede nikksen Nybegynder
18. september 2006 - 22:49 #14
hvad kan jeg så gøre? kan du lave et script ud fra mit der har multi-upload af billeder + data til hhv. en mappe (for biledets vedkommende) og database?

det fungerer upåklageligt så længe det kun drejer sig om et enkelt billede der skal uploades.
Avatar billede coderdk Praktikant
18. september 2006 - 22:52 #15
Prøv:

<?php

    $targetDir = $_SERVER['DOCUMENT_ROOT']."/nikk/images/galleripics/";

    $besked = "";
    if ( !empty( $_FILES['upfile'] ) )
    {
        $files = $_FILES['upfile'];
        $n = count( $files );
        for ( $i = 0; $i < $n; $i++ )
        {
            if ( is_uploaded_file( $files['tmp_name'][$i] ) )
            {
                $billede = $files['name'][$i];
                $extension = substr( $files['name'][$i], -3 );
                $filnavn = date("YmdHis").".".$extension;
                if ( ($extension == "jpg" || $extension == "png" || $extension == "gif")
                    && move_uploaded_file( $files['tmp_name'][$i], $targetDir . $filnavn ) ) )
                {
                    $besked .= "$billedeurl er blevet uploadet med succes!<br>";
                   
                    $xbillededato = $_REQUEST['billededato'][$i];
                 
                    $xbilledested        = checkInput($billedested[$i], '', '', "javascript", false);
                    $xbillededato            = checkInput($billededato[$i], '', '', "javascript", false);
                    $xbilledetitel            = checkInput($billedetitel[$i], '', '', "javascript", false);
                    $xbilledebeskrivelse    = checkInput($billedebeskrivelse[$i], '', 'yes', "javascript", false);
                    $xbilledeuge            = checkInput($billedeuge[$i], '', '', "javascript", false);
               
                    // Indsættes i database til retning af billede
                    $db->query("INSERT INTO nikksite_billeder VALUES ('', '$xbilledested', '$xbillededato', '$filnavn', '$xbilledetitel', '$xbilledebeskrivelse', '$xbilledeuge')");
                 
                    $site_body = "<font class=txt><p align=center><b>Dit billede er tilføjet!</b></p></font></font>";
                       
                }
                else
                {
                    $filnavn = "";
                    $billede = "";
                }           
            }
        }   
    }
 
    redirect('index.php?action=admin&sub=galleri', 4, X_REDIRECT_JS);

?>

Og dertil følgende upload-formular:

<?php

    for ( $i = 0; $i < 5; $i++ )
    {

?>
<tr>
<td bgcolor="$altbg2" class="tablerow" align="center"><input type="text" name="billededato[]" value="$datoen" size="10" /></td>
<td bgcolor="$altbg2" class="tablerow" align="center"><select size="1" name="billedested[]">
  <option value="valdisere0607">Val d'Isere 06/07</option>
  <option value="alpedhuez0405">Alpe d'Huez 04/05</option>
</select></td>
<td bgcolor="$altbg2" class="tablerow" align="center">
<input name="upfile[]" type="file" size="20" style="width: 200px"><br>
</td>
<td bgcolor="$altbg2" class="tablerow" align="center"><input type="text" name="billedetitel[]" size="15" /></td>
<td bgcolor="$altbg2" class="tablerow" align="center"><textarea rows="2" name="billedebeskrivelse[]" cols="20"></textarea></td>
<td bgcolor="$altbg2" class="tablerow" align="center"><input type="text" name="billedeuge[]" value="$ugenr" size="1" /></td>
</tr>
<?php

    }

?>
Avatar billede coderdk Praktikant
18. september 2006 - 22:54 #16
Hov:

                $filnavn = date("YmdHis").".".$extension;

Skal være:

                list( $mspart, $secpart ) = explode( ' ', microtime() );
                $filnavn = date("YmdHis").$mspart.".".$extension;
Avatar billede nikksen Nybegynder
18. september 2006 - 23:04 #17
Tæt på! Med kun en fil fungerer det fint.. så jeg prøvede med to og der indsatte den data for begge filer korrekt i databasen, men den uploade kun nr. 2 billede, så måske der forekom en overskrivning der?
Avatar billede nikksen Nybegynder
18. september 2006 - 23:05 #18
prøver lige med det sidste du tilføjede der.. øjeblik
Avatar billede nikksen Nybegynder
18. september 2006 - 23:07 #19
Jaa!! Det virker perfekt!! Tak! :)

Hvis du smider et svar, så får du de 60 point her og så opretter jeg en tråd med 140 point til.. eller vil du have mere?
Avatar billede coderdk Praktikant
18. september 2006 - 23:12 #20
Svar :) Nah, 60 er fint nok.
Avatar billede nikksen Nybegynder
18. september 2006 - 23:13 #21
Alright! I hvert fald mange tak herfra!
Avatar billede nikksen Nybegynder
18. september 2006 - 23:16 #22
Til andre der skulle gøre brug af det.. her er det endelige script:


<?php

$targetDir = $_SERVER['DOCUMENT_ROOT']."/nikk/images/galleripics/";

    $besked = "";
    if ( !empty( $_FILES['upfile'] ) ) {
        $files = $_FILES['upfile'];
        $n = count( $files );
        for ( $i = 0; $i < $n; $i++ ) {
            if ( is_uploaded_file( $files['tmp_name'][$i] ) ) {
                $billede = $files['name'][$i];
                $extension = substr( $files['name'][$i], -3 );
                list( $mspart, $secpart ) = explode( ' ', microtime() );
                $filnavn = date("YmdHis").$mspart.".".$extension;
                if ( ($extension == "jpg" || $extension == "png" || $extension == "gif")
                    && move_uploaded_file( $files['tmp_name'][$i], $targetDir . $filnavn ) /*)*/ ) {
                    $besked .= "$billedeurl er blevet uploadet med succes!<br>";
                 
                    $xbillededato = $_REQUEST['billededato'][$i];
               
                    $xbilledested        = checkInput($billedested[$i], '', '', "javascript", false);
                    $xbillededato            = checkInput($billededato[$i], '', '', "javascript", false);
                    $xbilledetitel            = checkInput($billedetitel[$i], '', '', "javascript", false);
                    $xbilledebeskrivelse    = checkInput($billedebeskrivelse[$i], '', 'yes', "javascript", false);
                    $xbilledeuge            = checkInput($billedeuge[$i], '', '', "javascript", false);
             
                    // Indsættes i database til retning af billede
                    $db->query("INSERT INTO nikksite_billeder VALUES ('', '$xbilledested', '$xbillededato', '$filnavn', '$xbilledetitel', '$xbilledebeskrivelse', '$xbilledeuge')");
               
                    $site_body = "<font class=txt><p align=center><b>Dit billede er tilføjet!</b></p></font></font>";
                     
                } else {
                    $filnavn = "";
                    $billede = "";
                }         
            }
        } 
    }

    redirect('index.php?action=admin&sub=galleri', 4, X_REDIRECT_JS);

?>


Og dertil upload-formularen, som man bare kan duplere alt efter hvor mange uploads der skal være:


<?php

    for ( $i = 0; $i < 5; $i++ )
    {

?>
<tr>
<td bgcolor="$altbg2" class="tablerow" align="center"><input type="text" name="billededato[]" value="$datoen" size="10" /></td>
<td bgcolor="$altbg2" class="tablerow" align="center"><select size="1" name="billedested[]">
  <option value="valdisere0607">Val d'Isere 06/07</option>
  <option value="alpedhuez0405">Alpe d'Huez 04/05</option>
</select></td>
<td bgcolor="$altbg2" class="tablerow" align="center">
<input name="upfile[]" type="file" size="20" style="width: 200px"><br>
</td>
<td bgcolor="$altbg2" class="tablerow" align="center"><input type="text" name="billedetitel[]" size="15" /></td>
<td bgcolor="$altbg2" class="tablerow" align="center"><textarea rows="2" name="billedebeskrivelse[]" cols="20"></textarea></td>
<td bgcolor="$altbg2" class="tablerow" align="center"><input type="text" name="billedeuge[]" value="$ugenr" size="1" /></td>
</tr>
<?php

    }

?>
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