Avatar billede tjensen Nybegynder
24. januar 2005 - 18:31 Der er 14 kommentarer og
2 løsninger

Foreach til fil upload

Hey!

Her har jeg 2 eksempler. Det første virker fint.

Men det gør nummer 2 ikke, hvordan gør man det korrekt?


<? //Eksempel 1
if (isset($_POST['submit_array'])){
    foreach ($_POST['billed'] as $key => $billed){
        echo "Så er det gjort for {$key}<br>";
        echo "\$billed = {$billed}<br><br>";       
    }
    echo "Efter foreach<br>";

}else{
    ?>
    <form action="" method="post" enctype="multipart/form-data">
    <input type="text" name="billed[1]"><br>
    <input type="text" name="billed[2]"><br>
    <input name="submit_array" type="submit" value="Send Array">
    </form>
    <?
}
?>

<? //Eksempel 2
if (isset($_POST['submit_array'])){
    foreach ($_POST['billed'] as $key => $billed){  //$_FILES['billed']['tmp_name'] virker heller ikke
        if (substr($_FILES['billed']['name'],-3)!="jpg"){
            die ("<META HTTP-EQUIV=Refresh CONTENT='0; URL=admin.php?vis={$_GET['vis']}'><br><p style='font:13px,arial,verdana,sans-serif;'>Fil formatet skal være jpg!</p>");
        }
        $til = "img/pic_{$key}.jpg";
        move_uploaded_file($_FILES['billed']['tmp_name'], $til);
        $src_img = ImageCreateFromJPEG($til);
        $dst_img = imagecreatetruecolor(507,350);
        $imginfo = getimagesize($til);
        ImageCopyResized($dst_img, $src_img, 0, 0, 0, 0, 507, 350, $imginfo[0], $imginfo[1]);
        ImageJPEG($dst_img, $til, "65");
        imagedestroy($dst_img);
        echo "Så er det gjort for {$key}<br>";
    }
    echo "Efter foreach<br>";

}else{
    ?>
    <form action="" method="post">
    <input type="file" name="billed[1]"><br>
    <input type="file" name="billed[2]"><br>
    <input name="submit_array" type="submit" value="Send Array">
    </form>
    <?
}
?>
Avatar billede tjensen Nybegynder
24. januar 2005 - 18:33 #1
ups enctype="multipart/form-data"> er selvfølgelig i eksempel 2
Avatar billede hmortensen Nybegynder
24. januar 2005 - 19:03 #2
Tror den skulle være der sådan her:
<?php
if (isset($_POST['submit_array']))
{
    for ($key=0;$key<count($_FILES['billed']['name']);$key++)
    {
        if (substr($_FILES['billed']['name'][$key],-3)!="jpg")
        {
            die ("<META HTTP-EQUIV=Refresh CONTENT='0; URL=admin.php?vis={$_GET['vis']}'><br><p style='font:13px,arial,verdana,sans-serif;'>Fil formatet skal være jpg!</p>");
        }
        $til = "img/pic_{$key}.jpg";
        move_uploaded_file($_FILES['billed']['tmp_name'][$key], $til);
        $src_img = imagecreatefromjpeg($til);
        $dst_img = imagecreatetruecolor(507,350);
        $imginfo = getimagesize($til);
        imagecopyresized($dst_img, $src_img, 0, 0, 0, 0, 507, 350, $imginfo[0], $imginfo[1]);
        imagejpeg($dst_img, $til, "65");
        imagedestroy($dst_img);
        echo "Så er det gjort for {$key}<br>";
    }
    echo "Efter foreach<br>";
}else{
    ?>
    <form action="" method="post" enctype="multipart/form-data">
        <input type="file" name="billed[]"><br>
        <input type="file" name="billed[]"><br>
        <input name="submit_array" type="submit" value="Send Array">
    </form>
    <?
}
?>

Jeg vil dog anbefale en anden måde at navngive dine billeder på, da man næste gang der uploades, overskriver.
Avatar billede detox Nybegynder
24. januar 2005 - 19:04 #3
<?
if (isset($_POST['submit_array'])){
    foreach ($_FILES['billed']['tmp_name'] as $key => $billed){
        if (is_uploaded_file($billed)) {
            if (substr($_FILES['billed']['name'][$key],-3)!="jpg"){
                die ("<META HTTP-EQUIV=Refresh CONTENT='0; URL=admin.php?vis={$_GET['vis']}'><br><p style='font:13px,arial,verdana,sans-serif;'>Fil formatet skal være jpg!</p>");
            }
            $til = "img/pic_{$key}.jpg";
            move_uploaded_file($billed, $til);
            $src_img = ImageCreateFromJPEG($til);
            $dst_img = imagecreatetruecolor(507,350);
            $imginfo = getimagesize($til);
            ImageCopyResized($dst_img, $src_img, 0, 0, 0, 0, 507, 350, $imginfo[0], $imginfo[1]);
            ImageJPEG($dst_img, $til, "65");
            imagedestroy($dst_img);
            echo "Så er det gjort for {$key}<br>";
        }
    }
    echo "Efter foreach<br>";
}else{
    ?>
    <form action="" method="post" enctype="multipart/form-data">
    <input type="file" name="billed[]"><br>
    <input type="file" name="billed[]"><br>
    <input name="submit_array" type="submit" value="Send Array">
    </form>
    <?
}
?>
Avatar billede detox Nybegynder
24. januar 2005 - 19:06 #4
Ja, der er vi rimeligt enige ;O)
Avatar billede tjensen Nybegynder
24. januar 2005 - 19:14 #5
Jamen det er jo dejligt! Tester det lige efter spise tid. Virker det får i hver 2*pointz/2 .... ;)
Avatar billede hmortensen Nybegynder
24. januar 2005 - 19:14 #6
Havde faktisk brugt en foreach først, men da $billede ikke bliver brugt, lavede jeg det om til en for :)

Men hele humlen i begge eksempler er, der kommer et 3d array.
Avatar billede detox Nybegynder
24. januar 2005 - 19:17 #7
I mit eksempel bruger jeg nu $billed 2 steder i foreach-løkken.
Avatar billede detox Nybegynder
24. januar 2005 - 19:18 #8
...men der er osse tilføjet en:

if (is_uploaded_file($billed)) {
Avatar billede tjensen Nybegynder
24. januar 2005 - 19:18 #9
Kunne også godt se at $billed ikke blev brugt. Men min erfaring med foreach og for  er hvad jeg har lært siden igår, så manglede lige lidt øverblik og forståelse af as => tingen.

Øvelse gør mester..
Avatar billede hmortensen Nybegynder
24. januar 2005 - 19:19 #10
Man kan jo sige at hvis den ligger i arrayet, så er den også uploadet :)
Avatar billede detox Nybegynder
24. januar 2005 - 19:22 #11
Det er nu ikke sikkert at den er uploadet af den grund, da du kan uploade navnet på en local fil. Jeg synes det er god kotume at tjekke med: is_uploaded_file().
Avatar billede hmortensen Nybegynder
24. januar 2005 - 19:23 #12
Du har sikkert ret.
Roder sjældent med upload.
Avatar billede tjensen Nybegynder
24. januar 2005 - 19:24 #13
Jeps, det er helt rigtig. Det havde jeg også taget forbehold for i den sammenhæng hvor det skal ind. Det her var bare en lille test jeg lavede før jeg satte det ind på den påtænkte plads.
Avatar billede tjensen Nybegynder
24. januar 2005 - 20:23 #14
Hey!

Detox brugte din måde, da den passer bedst ind i mine koder. Må gerne se lidt ens ud jo... :)

Men I fortjener sku begge points, så smid lige et svar begge 2!
Avatar billede hmortensen Nybegynder
24. januar 2005 - 20:24 #15
Håber du lærte lidt så :)
Avatar billede detox Nybegynder
24. januar 2005 - 20:38 #16
Ok, ja,
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