Avatar billede s0mmer Nybegynder
11. september 2006 - 23:30 Der er 9 kommentarer og
1 løsning

Lille fejl i multiupload

Hej eksperter,
Efter mange timers søgen og lidt frem og tilbage her på eksperten er jeg nu blevet det klogere og jeg ønsker en der lige kan hjælpe mig med en lille fejl her. Tag jer ikke af første kode at den er lidt lang, bare se i toppen efter de væsentligste ting. Upload koden:

//Upload
    if ($_POST['action'] == "addpic" && isset($_FILES['userfile'])) {
    foreach ($_FILES['userfile'] as $file)
        {
        if ($_FILES['userfile']['name'] != "") {
            if (($_FILES['userfile']['type'] == "image/pjpeg") || ($_FILES['userfile']['type'] == "image/jpeg")) {
                $tempnavn = str_replace("æ", "ae", $_FILES['userfile']['name']);
                $tempnavn = str_replace("ø", "oe", $tempnavn);
                $tempnavn = str_replace("å", "aa", $tempnavn);
                $filnavn = str_replace(" ", "_", $tempnavn);
                $gemfil = "temp/".$filnavn;
                if (!@move_uploaded_file($_FILES['userfile']['tmp_name'], $gemfil)) {
                    echo "Billedet kunne ikke gemmes.<br>\n";
                } else {
                    $pic1 = ImageCreateFromJPEG($gemfil);
                    $sizeX = ImageSX($pic1);
                    $sizeY = ImageSY($pic1);
                   
                    $pic2 = ImageCreateFromGIF("images/fotologo.gif");
                    $lsizeX = ImageSX($pic2);
                    $lsizeY = ImageSY($pic2);
                   
                    // Udregn hvor billedet skal placeres (nederste højre hjørne her)
                    $posX = $sizeX - $lsizeX;
                    $posY = $sizeY - $lsizeY;
                   
                    // Indsæt logo med 80% blanding
                    ImageCopyMerge($pic1, $pic2, $posX, $posY, 0, 0, $lsizeX, $lsizeY, 100);
                   
                    $wscale = 600 / $sizeX;
                    $hscale = 450 / $sizeY;
                    $scale = ( $hscale < $wscale ? $hscale : $wscale );
                    $nw = round( $sizeX * $scale, 0 );
                    $nh = round( $sizeY * $scale, 0 );
                    $dstim = imagecreatetruecolor( $nw, $nh );
                    imagecopyresampled( $dstim, $pic1, 0, 0, 0, 0, $nw, $nh, $sizeX, $sizeY );

                    // Gem billede
                    ImageJPEG($dstim, "fotos/".$_POST["select"]."/".$filnavn, 100);
                   
                    // Ryd op (inkl. sletning af midlertidig fil)
                    ImageDestroy($pic1);
                    ImageDestroy($pic2);
                    unlink($gemfil);
                   
                    echo "<font face='arial' size='2' color='666666'><center>Billedet blev gemt!</center></font><br>\n";
                    $db->ExecSQL("INSERT INTO snm_galleri (galleri,billede)VALUES('".$_POST["select"]."','".$_POST["select"]."/".$filnavn."')");
echo "<script language='Javascript'>
alert ('Billedet er uploadet!')
</script>";
echo "<script> location = 'admin_billeder.php' </script>";
                }
            }
        }
    }
  } else {


Her nede har jeg så input felterne:

    <form enctype="multipart/form-data" action="<?php echo $_SERVER['PHP_SELF']; ?>" method="POST">
      <input type="hidden" name="action" value="addpic">
      <input type="hidden" name="MAX_FILE_SIZE" value="1024000">
         
        <table width="500" border="0" cellpadding="2" cellspacing="0" class="none">
          <tr>
            <td width="124"> <font color="99D122" size="2" face="arial" class="header"><b>Galleri</b></font><font class="header">:</font>
            </td>
            <td width="368"><select name="select" class="textfield">
                <?
        for($i=0;$i<count($galleri);$i++)


print_r ("<option>".$galleri[$i][3]."</option>");

        ?>
              </select></td>
          </tr>
          <tr>
            <td><font face="arial" size="2" color="99D122"><b>Billede</b></font>:</td>
            <td><input type="file" name="userfile[]"></td>
          </tr>
          <tr>
            <td><font face="arial" size="2" color="99D122"><b>Billede</b></font>:</td>
            <td><input type="file" name="userfile[]"></td>
          </tr>

          <tr>
            <td>&nbsp; </td>
            <td><input name="submit" type="submit" value="Upload"></td>
          </tr>
        </table>
    </form>   


Beklager i fik hele tabel koden med.

Jeg kan sagtens se upload siden, men når jeg uploader går den til hvid skærm.

Men det sjove er at hvis jeg ændrer
<input type="file" name="userfile[]">
til
<input type="file" name="userfile">
så får jeg ikke hvid skærm, men jeg kan så kun også uploade 1 til af gangen. jeg havde ikk troet fejlen lå her?

Hvad gør jeg galt?
Avatar billede elskermad.dk Nybegynder
12. september 2006 - 09:05 #1
Du angiver ikke hviklen fil der skal oploades... de forskellige steder skal angives hvilken key der skal benyttes... fx nedestående linie:

if (!@move_uploaded_file($_FILES['userfile']['tmp_name'], $gemfil)) {


skal rettes til:

if (!@move_uploaded_file($_FILES['userfile']['tmp_name'][$file], $gemfil)) {
Avatar billede elskermad.dk Nybegynder
12. september 2006 - 09:06 #2
prøv at skrive nedenstående i toppen af din fil, så kan du se hvad file-arrayet indeholder:

<?

echo"<pre>";

print_r($_FILES['userfile']);

echo"</pre>";

?>
Avatar billede s0mmer Nybegynder
12. september 2006 - 14:35 #3
så er det ændret. den uploader desværre ikke, men jeg får det her udskrevet nu:

Array
(
    [name] => Array
        (
            [0] => Bjergtoppe.jpg
            [1] => Solnedgang.jpg
        )

    [type] => Array
        (
            [0] => image/pjpeg
            [1] => image/pjpeg
        )

    [tmp_name] => Array
        (
            [0] => /tmp/phpgMAdyS
            [1] => /tmp/phpAeb2Dz
        )

    [error] => Array
        (
            [0] => 0
            [1] => 0
        )

    [size] => Array
        (
            [0] => 28521
            [1] => 71189
        )


hvor er det mere jeg skal have rettet til så?
Avatar billede s0mmer Nybegynder
12. september 2006 - 15:05 #4
eller dvs. da jeg skrev at jeg havde ændret havde jeg kun ændret den ene linje du gav som eksempel.
Avatar billede s0mmer Nybegynder
12. september 2006 - 15:08 #5
.. kan jeg få dig til at vise de andre steder?
Avatar billede elskermad.dk Nybegynder
12. september 2006 - 17:00 #6
jamen alle de steder du bruger $_FILES-arrayet skal du have tilføjet [$file] for at tilgå den rigtige fil, og så også tilpasse at den ikke gemmer i samme fil hver gang, men gemmer hver enkelt fil hver for sig
Avatar billede s0mmer Nybegynder
12. september 2006 - 17:12 #7
så har jeg så:
<?
session_start();
include("db_con.php");
$query = $db->SendSQL("SELECT * FROM snm_bruger WHERE brugernavn='".$_SESSION["brugernavn"]."' AND password='".$_SESSION["password"]."'");
$s_brugernavn = $query[0][0];
$s_password = $query[0][1];
$galleri = $db->SendSQL("SELECT * FROM snm_gallerioverskrift");



if ($_SESSION["brugernavn"] !== "$s_brugernavn" && $_SESSION["password"] !== "$s_password")
{
    header("Location: admin.php");
    exit();
}


//Upload
    if ($_POST['action'] == "addpic" && isset($_FILES['userfile'])) {
    foreach ($_FILES['userfile'] as $file)
        {
        if ($_FILES['userfile']['name'][$file] != "") {
            if (($_FILES['userfile']['type'][$file] == "image/pjpeg") || ($_FILES['userfile']['type'][$file] == "image/jpeg")) {
                $tempnavn = str_replace("æ", "ae", $_FILES['userfile']['name'][$file]);
                $tempnavn = str_replace("ø", "oe", $tempnavn);
                $tempnavn = str_replace("å", "aa", $tempnavn);
                $filnavn = str_replace(" ", "_", $tempnavn);
                $gemfil = "temp/".$filnavn;
                if (!@move_uploaded_file($_FILES['userfile']['tmp_name'][$file], $gemfil)) {
                    echo "Billedet kunne ikke gemmes.<br>\n";
                } else {
                    $pic1 = ImageCreateFromJPEG($gemfil);
                    $sizeX = ImageSX($pic1);
                    $sizeY = ImageSY($pic1);
                   
                    $pic2 = ImageCreateFromGIF("images/fotologo.gif");
                    $lsizeX = ImageSX($pic2);
                    $lsizeY = ImageSY($pic2);
                   
                    // Udregn hvor billedet skal placeres (nederste højre hjørne her)
                    $posX = $sizeX - $lsizeX;
                    $posY = $sizeY - $lsizeY;
                   
                    // Indsæt logo med 80% blanding
                    ImageCopyMerge($pic1, $pic2, $posX, $posY, 0, 0, $lsizeX, $lsizeY, 100);
                   
                    $wscale = 600 / $sizeX;
                    $hscale = 450 / $sizeY;
                    $scale = ( $hscale < $wscale ? $hscale : $wscale );
                    $nw = round( $sizeX * $scale, 0 );
                    $nh = round( $sizeY * $scale, 0 );
                    $dstim = imagecreatetruecolor( $nw, $nh );
                    imagecopyresampled( $dstim, $pic1, 0, 0, 0, 0, $nw, $nh, $sizeX, $sizeY );

                    // Gem billede
                    ImageJPEG($dstim, "fotos/".$_POST["select"]."/".$filnavn, 100);
                   
                    // Ryd op (inkl. sletning af midlertidig fil)
                    ImageDestroy($pic1);
                    ImageDestroy($pic2);
                    unlink($gemfil);
                   
                    echo "<font face='arial' size='2' color='666666'><center>Billedet blev gemt!</center></font><br>\n";
                    $db->ExecSQL("INSERT INTO snm_galleri (galleri,billede)VALUES('".$_POST["select"]."','".$_POST["select"]."/".$filnavn."')");
echo "<script language='Javascript'>
alert ('Billedet er uploadet!')
</script>";
echo "<script> location = 'admin_billeder.php' </script>";
                }
            }
        }
    }
  } else {
?>


men har ikke gjort noget forskel.
Avatar billede elskermad.dk Nybegynder
12. september 2006 - 18:58 #8
argh, sorry... $file skal indeholde nummeret, dvs du skal definere $file til 0 ved første kørsel, også lægge en til hver gang:

//Upload
    if ($_POST['action'] == "addpic" && isset($_FILES['userfile'])) {
      $file = -1;

    foreach ($_FILES['userfile'])
        {
          $file++;
          $gemfil = "billede" . $file;
          $filnavn = "billede1_" . $file;

        if ($_FILES['userfile']['name'][$file] != "") {
            if (($_FILES['userfile']['type'][$file] == "image/pjpeg") || ($_FILES['userfile']['type'][$file] == "image/jpeg")) {
                $tempnavn = str_replace("æ", "ae", $_FILES['userfile']['name'][$file]);
                $tempnavn = str_replace("ø", "oe", $tempnavn);
                $tempnavn = str_replace("å", "aa", $tempnavn);
                $filnavn = str_replace(" ", "_", $tempnavn);
                $gemfil = "temp/".$filnavn;
                if (!@move_uploaded_file($_FILES['userfile']['tmp_name'][$file], $gemfil)) {
                    echo "Billedet kunne ikke gemmes.<br>\n";
                } else {
                    $pic1 = ImageCreateFromJPEG($gemfil);
                    $sizeX = ImageSX($pic1);
                    $sizeY = ImageSY($pic1);
                   
                    $pic2 = ImageCreateFromGIF("images/fotologo.gif");
                    $lsizeX = ImageSX($pic2);
                    $lsizeY = ImageSY($pic2);
                   
                    // Udregn hvor billedet skal placeres (nederste højre hjørne her)
                    $posX = $sizeX - $lsizeX;
                    $posY = $sizeY - $lsizeY;
                   
                    // Indsæt logo med 80% blanding
                    ImageCopyMerge($pic1, $pic2, $posX, $posY, 0, 0, $lsizeX, $lsizeY, 100);
                   
                    $wscale = 600 / $sizeX;
                    $hscale = 450 / $sizeY;
                    $scale = ( $hscale < $wscale ? $hscale : $wscale );
                    $nw = round( $sizeX * $scale, 0 );
                    $nh = round( $sizeY * $scale, 0 );
                    $dstim = imagecreatetruecolor( $nw, $nh );
                    imagecopyresampled( $dstim, $pic1, 0, 0, 0, 0, $nw, $nh, $sizeX, $sizeY );

                    // Gem billede
                    ImageJPEG($dstim, "fotos/".$_POST["select"]."/".$filnavn, 100);
                   
                    // Ryd op (inkl. sletning af midlertidig fil)
                    ImageDestroy($pic1);
                    ImageDestroy($pic2);
                    unlink($gemfil);
                   
                    echo "<font face='arial' size='2' color='666666'><center>Billedet blev gemt!</center></font><br>\n";
                    $db->ExecSQL("INSERT INTO snm_galleri (galleri,billede)VALUES('".$_POST["select"]."','".$_POST["select"]."/".$filnavn."')");
echo "<script language='Javascript'>
alert ('Billedet er uploadet!')
</script>";
echo "<script> location = 'admin_billeder.php' </script>";
                }
            }
        }
    }
  } else {
?>
Avatar billede s0mmer Nybegynder
12. september 2006 - 19:44 #9
efter at have copy/paste får jeg bare hvid skærm. der må være en lille fejl et sted
Avatar billede s0mmer Nybegynder
12. september 2006 - 22:21 #10
bruger en anden kode nu, ellers tak for hjælpen.
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
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

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