Avatar billede andreas13_fam Nybegynder
20. januar 2009 - 14:57 Der er 50 kommentarer og
1 løsning

upload billede giver problemmer

Jeg har leget lidt med noget upload af billeder, i starten vikede det også fint men da jeg så fik tilføjet en hel del ekstra så virkede det ikke. Jeg for fejlen "Der er sket en fejl" så det er denne funktion der ikke virker tilsyneladene

if (move_uploaded_file($_FILES['minfil']['tmp_name'], "$bufdestination"))



Hele billededellen ses her...

<?php
$sti = "Billeder/Intet-billede.jpg";
$filnavn = "Intet-billede.jpg";

if ($_FILES['minfil']) //Har brugeren forsøgt at uploade noget?
{
    if (preg_match("/^([^\.]+)\.(jpg|png|gif|bmp)$/", $_FILES['minfil']['name'], $regs))
    {
    //Henter billede converter
    require_once('MySQL/Plugin/class.imagemake_MySQL.php');
   
    //ser efter om filnavnet allerede eksistere.
            $nr = "0";
            $stop = "0";
            while($stop == 1)
            {
                $nr++;
                $filnavn = "$regs[1]$nr_thumb.$regs[2]";
                if (is_file("Billeder/$realfilnavn"))
                {
                //forsæt
                }
                else
                {
                $stop = "1";
   
    //Indstilinger
    $midlertidig = "$regs[1]$nrmidlertidig.$regs[2]";
    $realfilnavn = "$regs[1]$nr_real.$regs[2]";
    $thumbfilnavn = "$regs[1]$nr_thumb.$regs[2]";
                }
            }   
   

    $destination = "Billeder/";
   
    //Andet
    $bufdestination = "$destination$midlertidig";
    $thumbdestination = "$destination$thumbfilnavn";
    $realdestination = "$destination$realfilnavn";
   
   
    //Forsøg at flyttede den uploadede fil har dens midlertidige destination til den nye
        if (move_uploaded_file($_FILES['minfil']['tmp_name'], "$bufdestination"))
        {
    echo '<div style="text-align:left">Filen: '.$filnavn.' blevet uploadet</div>';
    //<
        $info = getimagesize("$bufdestination");
        $infobredde = $info[0];
        $infohojde = $info[1];

            /*******************
            /thumb udregner    /
            *******************/           
            if ($infohojde < $infobredde)
            {
            $thumpforhold = "$infobredde / 280";
            $thumprelativhojde = "$infohojde / $thumpforhold";
            $thumpbredde = "280";
            $thumphojde = round($thumprelativhojde);
            }
            elseif ($infobredde < $infohojde)
            {
            $thumpforhold = "$infohojde / 280";
            $thumprelativbredde = "$infobredde / $thumpforhold";
            $thumphojde = "280";
            $thumpbredde = round($thumprelativbredde);           
            }
           
            if ($infobredde == $infohojde)
            {
            $thumphojde = "280";
            $thumpbredde = "280";
            }
           
            /*******************
            /real udregner    /
            *******************/
            if ($infohojde < $infobredde)
            {
            $realforhold = "$infobredde / 280";
            $realrelativhojde = "$infohojde / $realforhold";
            $realbredde = "280";
            $realhojde = round($realrelativhojde);
            }
            elseif ($infobredde < $infohojde)
            {
            $realforhold = "$infohojde / 280";
            $realrelativbredde = "$infobredde / $realforhold";
            $realhojde = "280";
            $realbredde = round($realrelativbredde);           
            }
           
            if ($infobredde == $infohojde)
            {
            $realhojde = "280";
            $realbredde = "280";
            }

            /*******************
            /Gemmer thumb img  /
            *******************/           
            try
        {
            $image = new image('.$bufdestination.');
            $image->quality(70);
            $image->resize($thumpbredde,$thumphojde);
            $image->watermark('img/vandmaerke.png', 'RIGHT','BOTTOM');
            $image->save($thumbdestination);
            }
            catch(Exception $e)
            {
            echo 'Exception Caught : <b >' . $e->getMessage() . '</b>';
            }
           
            /*******************
            /Gemmer real img  /
            *******************/       
            try
        {
            $image = new image('.$bufdestination.');
            $image->quality(100);
            $image->resize($realbredde,$realhojde);
            $image->watermark('img/vandmaerke.png', 'RIGHT','BOTTOM');
            $image->save($realdestination);
            }
            catch(Exception $e)
            {
            echo 'Exception Caught : <b >' . $e->getMessage() . '</b>';
            }
           
            /*******************
            /Sletter buf fil  /
            *******************/   
            if (is_file("$bufdestination")) //Tjek om filen findes
            {
                unlink("$bufdestination"); //Sletter fillen
            }


    }
    else
    {
    echo '<div style="text-align:left">Der er sket en fejl</div>';
    }
  }
    else
    {
    echo '<div style="text-align:left">Intet billede uploaded,<br /> bruger standart billede.</div>';
    }
}
else
{
    if (isset($_POST['billede']))
    {
    $sti = $_POST['billede'];
    echo '<div style="text-align:left">A-Mweb.dk har forsøgt at genskabe det sidste uploaded billede.</div>';
    }
    else
    {
    echo '<div style="text-align:left">Der er sandsynligvis ikke<br />uploaded noget billede,<br /> standart billede vil blive brugt.<br /></div>';
    }
}
echo '<div style="text-align:right"><img src="'.$thumbdestination.'" height="280" width="280" alt="billede" /></div>';
?>
Avatar billede andreas13_fam Nybegynder
20. januar 2009 - 15:01 #1
PS: Jeg har sat mappen Billeder/ til 777 retigheder
Avatar billede jakobdo Ekspert
20. januar 2009 - 16:54 #2
Prøv at udskriv: $bufdestination
Indeholder den det korrekte ?

Du bør evt. rette:
if ($_FILES['minfil']) //Har brugeren forsøgt at uploade noget?
til:
if(is_uploaded_file($_FILES['minfil']['tmp_name'])) //Har brugeren forsøgt at uploade noget?
Avatar billede andreas13_fam Nybegynder
20. januar 2009 - 17:43 #3
Jeg har prøvet at insætte denne, men den skiver ingen gang noget ud til mig...
<?php
echo 'filnavn: '.$filnavn.'<br />';
echo 'midlertidig: '.$midlertidig.'<br />';
echo 'realfilnavn: '.$realfilnavn.'<br />';
echo 'thumbfilnavn: '.$thumbfilnavn.'<br />';
echo 'bufdestination: '.$bufdestination.'<br />';
echo 'thumbdestination: '.$thumbdestination.'<br />';
echo 'realdestination: '.$realdestination.'<br />';
?>


Men i
$midlertidig = "$regs[1]$nrmidlertidig.$regs[2]";
$realfilnavn = "$regs[1]$nr_real.$regs[2]";
thumbfilnavn = "$regs[1]$nr_thumb.$regs[2]";

Er der en fejl
$midlertidig = "$regs[1]$nrmidlertidig.$regs[2]";
Skal hede $midlertidig = "$regs[1] og $nr og midlertidig. og $regs[2]";
hvordan skiver man det.
Avatar billede jakobdo Ekspert
20. januar 2009 - 20:46 #4
Prøv at udskriv det efter denne kode:

if ($_FILES['minfil']) //Har brugeren forsøgt at uploade noget?
{
    if (preg_match("/^([^\.]+)\.(jpg|png|gif|bmp)$/", $_FILES['minfil']['name'], $regs))
    {
    //Henter billede converter
    require_once('MySQL/Plugin/class.imagemake_MySQL.php');
 
    //ser efter om filnavnet allerede eksistere.
            $nr = "0";
            $stop = "0";
            while($stop == 1)
            {
                $nr++;
                $filnavn = "$regs[1]$nr_thumb.$regs[2]";
                if (is_file("Billeder/$realfilnavn"))
                {
                //forsæt
                }
                else
                {
                $stop = "1";
 
    //Indstilinger
    $midlertidig = "$regs[1]$nrmidlertidig.$regs[2]";
    $realfilnavn = "$regs[1]$nr_real.$regs[2]";
    $thumbfilnavn = "$regs[1]$nr_thumb.$regs[2]";
                }
            }
Avatar billede andreas13_fam Nybegynder
20. januar 2009 - 21:40 #5
En del af problemmet ligger nu stadig i at
$nrmidlertidig opføre sig som variablem nrmidlertidig og _IKKE_ $nr og midlertidig

hvis jeg skiver denne kode...
    $test = "test.jpg";
    if (preg_match("/^([^\.]+)\.(jpg|png|gif|bmp)$/", $test, $regs))
    {

$nr = "0";
$filnavn = "$regs[1]$nr_thumb.$regs[2]";

    //Indstilinger
    $buffilnavn = "$regs[1]\-$nr\_buf\.$regs[2]";
    $realfilnavn = "$regs[1]\-$nr\_real\.$regs[2]";
    $thumbfilnavn = "$regs[1]\-$nr\_thumb\.$regs[2]";

    $destination = "Billeder/";
   
    //Andet
    $bufdestination = "$destination$midlertidig";
    $thumbdestination = "$destination$thumbfilnavn";
    $realdestination = "$destination$realfilnavn";
   
    }
   
echo 'filnavn: '.$filnavn.'<br />';
echo 'buffilnavn: '.$buffilnavn.'<br />';
echo 'realfilnavn: '.$realfilnavn.'<br />';
echo 'thumbfilnavn: '.$thumbfilnavn.'<br />';
echo 'bufdestination: '.$bufdestination.'<br />';
echo 'thumbdestination: '.$thumbdestination.'<br />';
echo 'realdestination: '.$realdestination.'<br />';
... Så skiver den de rigtige variabler men desvære også \

Resultat...
filnavn: test.jpg
buffilnavn: test\-0\_buf\.jpg
realfilnavn: test\-0\_real\.jpg
thumbfilnavn: test\-0\_thumb\.jpg
bufdestination: Billeder/
thumbdestination: Billeder/test\-0\_thumb\.jpg
realdestination: Billeder/test\-0\_real\.jpg

ellers ville den bare skive...
filnavn: test.jpg
buffilnavn: test-.jpg
realfilnavn: test-.jpg
thumbfilnavn: test-.jpg
bufdestination: Billeder/
thumbdestination: Billeder/test-.jpg
realdestination: Billeder/test-.jpg

Derfor har jeg lidt svært ve at teste det du forslår da det ikke kan virke, men jeg vil da nu prøve :D
Avatar billede andreas13_fam Nybegynder
20. januar 2009 - 21:49 #6
Den udskiver dette, ved dit eksempel :D

filnavn: Intet-billede.jpg
buffilnavn:
realfilnavn:
thumbfilnavn:
bufdestination:
thumbdestination:
realdestination:
Avatar billede jakobdo Ekspert
20. januar 2009 - 21:51 #7
Så ret:
$midlertidig = "$regs[1]$nrmidlertidig.$regs[2]";
til:
$midlertidig = "$regs[1].$nr.$midlertidig.$regs[2]";
Avatar billede andreas13_fam Nybegynder
20. januar 2009 - 21:56 #8
Det første skal være sådan hvis det skal give mening, da den aldig vil kunne finde $filnavn men det virker stadig ikke sandsynligvis pga samme problem som jeg har skrævet om tideliger.

<?php
$filnavn = "Intet-billede.jpg";

if ($_FILES['minfil']) //Har brugeren forsøgt at uploade noget?
{
    if (preg_match("/^([^\.]+)\.(jpg|png|gif|bmp)$/", $_FILES['minfil']['name'], $regs))
    {
    //Henter billede converter
    require_once('MySQL/Plugin/class.imagemake_MySQL.php');
 
    //ser efter om filnavnet allerede eksistere.
            $nr = "0";
            $stop = "0";
            while($stop == 1)
            {
                $nr++;
                $thumbfilnavn = "$regs[1]$nr_thumb.$regs[2]";
                if (is_file("Billeder/$thumbfilnavn"))
                {
                //forsæt
                }
                else
                {
                $stop = "1";
 
    //Indstilinger
    $buffilnavn = "$regs[1]$nrmidlertidig.$regs[2]";
    $realfilnavn = "$regs[1]$nr_real.$regs[2]";
    $thumbfilnavn = "$regs[1]$nr_thumb.$regs[2]";
                }
            }

    $destination = "Billeder/";
   
    //Andet
    $filnavn = "$regs[1]$nr.$regs[2]";
    $bufdestination = "$destination$midlertidig";
    $thumbdestination = "$destination$thumbfilnavn";
    $realdestination = "$destination$realfilnavn";
Avatar billede jakobdo Ekspert
20. januar 2009 - 22:00 #9
SE her:
$buffilnavn = "$regs[1]$nrmidlertidig.$regs[2]";
Skal det ikke være:
$buffilnavn = "$regs[1]$nr.$midlertidig.$regs[2]";
Men hvor kommer $midlertidig fra ?
Avatar billede andreas13_fam Nybegynder
20. januar 2009 - 22:08 #10
Man kunne også kalde det
$buffilnavn = "$regs[1]$nr_buf.$regs[2]";
$realfilnavn = "$regs[1]$nr_real.$regs[2]";
$thumbfilnavn = "$regs[1]$nr_thumb.$regs[2]"

Det jeg mener er at _buf. og _real. og _thumb. er tekst, men det kan jeg selvfølgelig bare ligge ind i en variabel.
Avatar billede andreas13_fam Nybegynder
20. januar 2009 - 22:13 #11
if ($_FILES['minfil']) //Har brugeren forsøgt at uploade noget?
{
    if (preg_match("/^([^\.]+)\.(jpg|png|gif|bmp)$/", $_FILES['minfil']['name'], $regs))
    {
    //Henter billede converter
    require_once('MySQL/Plugin/class.imagemake_MySQL.php');
   
    //NY
    $buf = "_buf.";
    $real = "_real.";
    $thumb = "_thumb.";
 
    //ser efter om filnavnet allerede eksistere.
            $nr = "0";
            $stop = "0";
            while($stop == 1)
            {
                $nr++;
                $thumbfilnavn = "$regs[1]$nr$thumb.$regs[2]";
                if (is_file("Billeder/$thumbfilnavn"))
                {
                //forsæt
                }
                else
                {
                $stop = "1";
 
    //Indstilinger
    $buffilnavn = "$regs[1]$nr$buf$regs[2]";
    $realfilnavn = "$regs[1]$nr$real$regs[2]";
    $thumbfilnavn = "$regs[1]$nr$thumb$regs[2]";
                }
            }

    $destination = "Billeder/";
   
    //Andet
    $filnavn = "$regs[1]$nr.$regs[2]";
    $bufdestination = "$destination$midlertidig";
    $thumbdestination = "$destination$thumbfilnavn";
    $realdestination = "$destination$realfilnavn";
   

Ser ud til at give de rigtige værdier, men om det virker finder jeg først ud af i morgen, da jeg er for træt nu.
Avatar billede jakobdo Ekspert
20. januar 2009 - 22:13 #12
Men i stedet for at smide ting i variabler, og bruge disse variabler i variabler osv...
Så prøv at skær lidt ned på variabler, så vil overskueligheden også blive bedre.
Avatar billede andreas13_fam Nybegynder
21. januar 2009 - 14:23 #13
Jov men hvordan sætter jeg tekst ind i en variabel
$bufdestination = "TEKST(Billeder/) $VARIABEL";

Men det er lykkedes mig at få de rigtiige verdier nu.
<?php
$filnavn = "Intet-billede.jpg";

if ($_FILES['minfil']) //Har brugeren forsøgt at uploade noget?
{
    if (preg_match("/^([^\.]+)\.(jpg|png|gif|bmp)$/", $_FILES['minfil']['name'], $regs))
    {
    //Henter billede converter
    require_once('MySQL/Plugin/class.imagemake_MySQL.php');
   
    //NY
    $buf = "_buf.";
    $real = "_real.";
    $thumb = "_thumb.";
 
    //ser efter om filnavnet allerede eksistere.
            $nr = "0";
            $stop = "0";
            while($stop == 1)
            {
                $nr++;
                $thumbfilnavn = "$regs[1]$nr$thumb$regs[2]";
                if (is_file("Billeder/$thumbfilnavn"))
                {
                //forsæt
                }
                else
                {
                $stop = "1";
                }
            }

    $destination = "Billeder/";
   
  //Indstilinger
    $buffilnavn = "$regs[1]$nr$buf$regs[2]";
  $realfilnavn = "$regs[1]$nr$real$regs[2]";
  $thumbfilnavn = "$regs[1]$nr$thumb$regs[2]";
 
    $filnavn = "$regs[1]$nr.$regs[2]";
   
    $bufdestination = "$destination$buffilnavn";
    $thumbdestination = "$destination$thumbfilnavn";
    $realdestination = "$destination$realfilnavn";
   
    echo 'filnavn: '.$filnavn.'<br />';
    echo 'buffilnavn: '.$buffilnavn.'<br />';
    echo 'realfilnavn: '.$realfilnavn.'<br />';
    echo 'thumbfilnavn: '.$thumbfilnavn.'<br />';
    echo 'bufdestination: '.$bufdestination.'<br />';
    echo 'thumbdestination: '.$thumbdestination.'<br />';
    echo 'realdestination: '.$realdestination.'<br />';
   
    //Forsøg at flyttede den uploadede fil har dens midlertidige destination til den nye
        if (move_uploaded_file($_FILES['minfil']['tmp_name'], $bufdestination))


Men den skiver stadig "Der er sket en fejl"
Avatar billede jakobdo Ekspert
21. januar 2009 - 14:42 #14
Jeg ville gøre sådan her:

$bufdestination = "TEKST" . $VARIABEL;
Avatar billede andreas13_fam Nybegynder
21. januar 2009 - 17:18 #15
Sådan nu har jeg fjernet en del variabler og den udskriver stadig de rigte variabler.
Men jeg kan stadig se at den ikke uploader filen ("Der er sket en fejl")
Og at lykken der tjekker om der findes en lignede filnavn ikke virker.
Avatar billede andreas13_fam Nybegynder
21. januar 2009 - 17:18 #16
hele billede delen ses her...
_______________________________________________________
<?php
$filnavn = "Intet-billede.jpg";

if ($_FILES['minfil']) //Har brugeren forsøgt at uploade noget?
{
    if (preg_match("/^([^\.]+)\.(jpg|png|gif|bmp)$/", $_FILES['minfil']['name'], $regs))
    {
    //Henter billede converter
    require_once('MySQL/Plugin/class.imagemake_MySQL.php');
 
    //ser efter om filnavnet allerede eksistere.
            $nr = "0";
            $stop = "0";
            while($stop == 1)
            {
                $nr++;
                $tjekthumb     = "Billeder/" . $regs[1] . "" . $nr . "_thumb." . $regs[2];
                $tjekreal     = "Billeder/" . $regs[1] . "" . $nr . "_real." . $regs[2];
                if (is_file("$tjekthumb") || is_file("$tjekreal"))
                {
                //forsæt
                }
                else
                {
                $stop = "1";
                }
            }

   
  //Indstilinger
 
    $filnavn = $regs[1] . "" . $nr . "." .$regs[2];
   
    $bufdestination     = "Billeder/" . $regs[1] . "" . $nr . "_buf." . $regs[2];
    $thumbdestination = "Billeder/" . $regs[1] . "" . $nr . "_thumb." . $regs[2];
    $realdestination     = "Billeder/" . $regs[1] . "" . $nr . "_real." . $regs[2];
   
    echo 'filnavn: '.$filnavn.'<br />';
    echo 'bufdestination: '.$bufdestination.'<br />';
    echo 'thumbdestination: '.$thumbdestination.'<br />';
    echo 'realdestination: '.$realdestination.'<br />';
   
    //Forsøg at flyttede den uploadede fil har dens midlertidige destination til den nye <
        if (move_uploaded_file($_FILES['minfil']['tmp_name'], $bufdestination))
        {
    echo '<div style="text-align:left">Filen: '.$filnavn.' blevet uploadet</div>';
    //<
        $info = getimagesize("$bufdestination");
        $infobredde = $info[0];
        $infohojde = $info[1];

            /*******************
            /thumb udregner    /
            *******************/           
            if ($infohojde < $infobredde)
            {
            $thumpforhold = "$infobredde / 280";
            $thumprelativhojde = "$infohojde / $thumpforhold";
            $thumpbredde = "280";
            $thumphojde = round($thumprelativhojde);
            }
            elseif ($infobredde < $infohojde)
            {
            $thumpforhold = "$infohojde / 280";
            $thumprelativbredde = "$infobredde / $thumpforhold";
            $thumphojde = "280";
            $thumpbredde = round($thumprelativbredde);           
            }
           
            if ($infobredde == $infohojde)
            {
            $thumphojde = "280";
            $thumpbredde = "280";
            }
           
            /*******************
            /real udregner    /
            *******************/
            if ($infohojde < $infobredde)
            {
            $realforhold = "$infobredde / 280";
            $realrelativhojde = "$infohojde / $realforhold";
            $realbredde = "280";
            $realhojde = round($realrelativhojde);
            }
            elseif ($infobredde < $infohojde)
            {
            $realforhold = "$infohojde / 280";
            $realrelativbredde = "$infobredde / $realforhold";
            $realhojde = "280";
            $realbredde = round($realrelativbredde);           
            }
           
            if ($infobredde == $infohojde)
            {
            $realhojde = "280";
            $realbredde = "280";
            }

            /*******************
            /Gemmer thumb img  /
            *******************/           
            try
        {
            $image = new image('.$bufdestination.');
            $image->quality(70);
            $image->resize($thumpbredde,$thumphojde);
            $image->watermark('img/vandmaerke.png', 'RIGHT','BOTTOM');
            $image->save($thumbdestination);
            }
            catch(Exception $e)
            {
            echo 'Exception Caught : <b >' . $e->getMessage() . '</b>';
            }
           
            /*******************
            /Gemmer real img  /
            *******************/       
            try
        {
            $image = new image('.$bufdestination.');
            $image->quality(100);
            $image->resize($realbredde,$realhojde);
            $image->watermark('img/vandmaerke.png', 'RIGHT','BOTTOM');
            $image->save($realdestination);
            }
            catch(Exception $e)
            {
            echo 'Exception Caught : <b >' . $e->getMessage() . '</b>';
            }
           
            /*******************
            /Sletter buf fil  /
            *******************/   
            if (is_file("$bufdestination")) //Tjek om filen findes
            {
                unlink("$bufdestination"); //Sletter fillen
            }


    }
    else
    {
    echo '<div style="text-align:left">Der er sket en fejl</div>';
    }
  }
    else
    {
    echo '<div style="text-align:left">Intet billede uploaded,<br /> bruger standart billede.</div>';
    }
}
else
{
    if (isset($_POST['billede']))
    {
    $sti = $_POST['billede'];
    echo '<div style="text-align:left">A-Mweb.dk har forsøgt at genskabe det sidste uploaded billede.</div>';
    }
    else
    {
    echo '<div style="text-align:left">Der er sandsynligvis ikke<br />uploaded noget billede,<br /> standart billede vil blive brugt.<br /></div>';
    }
}
echo '<div style="text-align:right"><img src="'.$thumbdestination.'" height="280" width="280" alt="billede" /></div>';

?>
Avatar billede jakobdo Ekspert
21. januar 2009 - 20:49 #17
Ret lige:

$nr = "0";
$stop = "0";

$stop = "1";

til:

$nr = 0;
$stop = 0;

$stop = 1;
Avatar billede andreas13_fam Nybegynder
21. januar 2009 - 21:07 #18
Alså jeg uploader billede TEST0_thumb.jpg via FTP og tester så efter jeg har rettet til det du siger. Men det virker ikke.

Jeg for...
filnavn: TEST0.jpg
bufdestination: Billeder/TEST0_buf.jpg
thumbdestination: Billeder/TEST0_thumb.jpg
realdestination: Billeder/TEST0_real.jpg

Men skulle få...
filnavn: TEST1.jpg
bufdestination: Billeder/TEST1_buf.jpg
thumbdestination: Billeder/TEST1_thumb.jpg
realdestination: Billeder/TEST1_real.jpg

Jeg prøver lidt senere at holde det helt simpelt og så ligge mere til, men tak for den hjælp du ynder ganske gratis. Det syntes jeg er god stil :D
Avatar billede jakobdo Ekspert
21. januar 2009 - 21:34 #19
Prøv lige at udskriv:

print_r($regs) lige efter din preg_match()
Avatar billede andreas13_fam Nybegynder
22. januar 2009 - 14:23 #20
Det ser rigtigt ud
Array
(
    [0] => TEST.jpg
    [1] => TEST
    [2] => jpg
)
Avatar billede jakobdo Ekspert
22. januar 2009 - 14:31 #21
Så skal du igang med at fejlsøge i din $nr funktion...
Avatar billede andreas13_fam Nybegynder
22. januar 2009 - 14:46 #22
Jeg ville prove med det men det virker ikke :(

<?php
$filnavn = "Intet-billede.jpg";

if ($_FILES['minfil']) //Har brugeren forsøgt at uploade noget?
{
    if (preg_match("/^([^\.]+)\.(jpg|png|gif|bmp)$/", $_FILES['minfil']['name'], $regs))
    {
      echo "<pre>";
        print_r($regs);
        echo "</pre>";
        $thumbdestination = "Billeder/" . $_FILES['minfil']['name'];
            echo 'thumbdestination: '.$thumbdestination.'<br />';

        //Forsøg at flyttede den uploadede fil har dens midlertidige destination til den nye
        if (move_uploaded_file($_FILES['minfil']['tmp_name'], $thumbdestination))
        {
        echo "Filen" . $_FILES['minfil']['name'] . " blevet uploadet";
        }
        else
        {
        echo "Der er sket en fejl";
        }
       
      }
}
echo '<div style="text-align:right"><img src="'.$thumbdestination.'" height="280" width="280" alt="billede" /></div>';

?>

Den udskriver …

Array
(
    [0] => TEST.jpg
    [1] => TEST
    [2] => jpg
)

thumbdestination: Billeder/TEST.jpg
Der er sket en fejl
Avatar billede andreas13_fam Nybegynder
22. januar 2009 - 14:47 #23
"Jeg vil lige prøve med dette" skulle der stå
Avatar billede jakobdo Ekspert
22. januar 2009 - 15:02 #24
Så må det jo være
thumbdestination: Billeder/TEST.jpg
Der er problemet.
Har ligger mappen Billeder/ i samme mappe som php scriptet ?
Avatar billede andreas13_fam Nybegynder
22. januar 2009 - 15:09 #25
Index.php inkluder
MySQL/Opret-opskrift/Opret-se_MySQL.php

Billede mappen ligger her
Billeder/

Så ja Billeder ligger i samme mappe som index.php

Jeg har læst at der er noget der hedder safe mode, kan det have noget at sige.
        if( ini_get('safe_mode') )
        {
    echo 'safe mode: ON <br />';
        }else
        {
    echo 'safe mode: OFF <br />';
        }

Udiver safe mode: OFF
Avatar billede andreas13_fam Nybegynder
22. januar 2009 - 15:09 #26
Jeg vil lige prøve med nogle absolutte stier /rod/mappe/...
Avatar billede andreas13_fam Nybegynder
22. januar 2009 - 15:22 #27
Nu har jeg prøvet med
/home/amwebdk/public_html/Portal/WWW_Kogebogen/Billeder/
og
http://kogebogen.a-mweb.dk/Billeder/
Men intet virker
Avatar billede andreas13_fam Nybegynder
22. januar 2009 - 15:32 #28
Han dette have noget at sige...


Frontpage Extensions

Frontpage Extensions allow you to publish your site directly from the FrontPage application. This means that you will not have to upload files through FTP, or another method.

Warning: Installing or uninstalling Frontpage Extensions will result in the loss of all ".htaccess" files in your web area. Any changes you have made to your ".htaccess" files will be lost. Any directories you have protected with WebProtect will become unprotected until you reprotect them.

Domain -------------|---- Status
____________________|_____________
a-mweb.dk ----------|---- installed    
kogebogen.a-mweb.dk |---- not installed <-- det ligger på denne
Avatar billede andreas13_fam Nybegynder
22. januar 2009 - 15:33 #29
Domain --------------------|-- Status
___________________|_____________
a-mweb.dk ---------------|-- installed   
kogebogen.a-mweb.dk |-- not installed <-- det ligger på denne
Avatar billede jakobdo Ekspert
22. januar 2009 - 15:56 #30
Jeg ville netop prøve med absolutte stier.
F.eks.:
$thumbdestination = getcwd() . "/Billeder/" . $_FILES['minfil']['name'];

Og du er sikker på Billeder mappen er med stort B og ikke billeder ?
Avatar billede andreas13_fam Nybegynder
22. januar 2009 - 15:58 #31
Yes jeg har kopieret teksten :)
Men det er noget jeg plejer at glemme på et tidspunkt.
Jeg vil prøve med absolutte stiler men skal da lige finde ud af hvad getcwd() gør
Avatar billede andreas13_fam Nybegynder
22. januar 2009 - 16:03 #32
Nope

Array
(
    [0] => TEST.jpg
    [1] => TEST
    [2] => jpg
)

thumbdestination: /home/amwebdk/public_html/Portal/WWW_Kogebogen/Billeder/TEST.jpg
safe mode: OFF
Der er sket en fejl
Avatar billede jakobdo Ekspert
22. januar 2009 - 16:45 #33
Har du allerede en fil der hedder:
/home/amwebdk/public_html/Portal/WWW_Kogebogen/Billeder/TEST.jpg ??
Avatar billede andreas13_fam Nybegynder
22. januar 2009 - 17:39 #34
Nej det har jeg desvære ikke.
http://www.kogebogen.a-mweb.dk/Billeder/
Avatar billede jakobdo Ekspert
22. januar 2009 - 18:23 #35
Og Billeder/ er chmod'et til 777 ?
Avatar billede andreas13_fam Nybegynder
22. januar 2009 - 21:12 #36
Yeps
Så jeg forså ingen ting, det har nemlig virket ???
Avatar billede andreas13_fam Nybegynder
22. januar 2009 - 21:19 #37
I morgen når jeg kommer hjem til min PC kan jeg lige lave en ny PHP side, som ligger på main domænet, og som er så simpelt som det kan være.
Det skulle meget gerne virke, og så må jeg vel fylde lidt på meget lidt af gangen.

Men det er godt nok sært!
Avatar billede jakobdo Ekspert
22. januar 2009 - 21:29 #38
Prøv evt. at kontakt mig på msn: jakobdo /at\ hotmail \dot/ com
Så må jeg evt. kigge på det direkte via ftp, hvis det er muligt.
Avatar billede andreas13_fam Nybegynder
23. januar 2009 - 14:59 #39
Jeg tror jeg har fundet ud af hvorfor. Filen jeg prøver at uploade er bare for stor, ifølge min server. Så det skal jeg lige have testet. Men det er nu lykkedes mig at uploade en fil her http://www.a-mweb.dk/Portal/TEST/
Avatar billede andreas13_fam Nybegynder
23. januar 2009 - 15:02 #40
Yeps, stor fil virker ikke, lille fil gør. :D
Avatar billede jakobdo Ekspert
23. januar 2009 - 15:04 #41
Hvor stor er din store fil i pixels ?

Højde x bredde ?
Avatar billede andreas13_fam Nybegynder
23. januar 2009 - 16:02 #42
Min fil er 800x600
Ud kommer så i dette tilfælde
thump: 280x210 ; kvalitet 65%
real: 700x525 ; kvalitet 90%

Men nu virker upload delen da, men min navne lykke virker ikke.
Jeg har lidt en ide om at den virker ligesom en funktion xxx()
at det der sker der inde ikke komme udenfor og det er grunden til at $nr er 0 uanset hvad.

kode...

        /*******************
        /ændre filnavnet  /
        *******************/
            $nr = 0;
            $stop = 0;
            while($stop == 1)
            {
                $nr++;
                $tjekthumb     = "Billeder/" . $regs[1] . "" . $nr . "_thumb." . $regs[2];
                $tjekreal     = "Billeder/" . $regs[1] . "" . $nr . "_real." . $regs[2];
                if (is_file("$tjekthumb") || is_file("$tjekreal"))
                {
                //forsæt
                }
                else
                {
                $stop = 1;
                }
            }

        /*******************
        /laver standart var/
        *******************/   
    $filnavn = $regs[1] . "" . $nr . "." .$regs[2];
   
    $bufdestination     = "Billeder/" . $regs[1] . "" . $nr . "_buf." . $regs[2];
    $thumbdestination = "Billeder/" . $regs[1] . "" . $nr . "_thumb." . $regs[2];
    $realdestination     = "Billeder/" . $regs[1] . "" . $nr . "_real." . $regs[2];


        /*******************
        /tester variabler  /
        *******************/
    echo 'filnavn: '.$filnavn.'<br />';
    echo 'bufdestination: '.$bufdestination.'<br />';
    echo 'thumbdestination: '.$thumbdestination.'<br />';
    echo 'realdestination: '.$realdestination.'<br />';
    echo 'nr.: '.$nr.'<br />';
    echo 'tjekthumb: '.$tjekthumb.'<br />';
    echo 'tjekreal: '.$tjekreal.'<br />';


Udskriver...

filnavn: TEST0.jpg
bufdestination: Billeder/TEST0_buf.jpg
thumbdestination: Billeder/TEST0_thumb.jpg
realdestination: Billeder/TEST0_real.jpg
nr.: 0
tjekthumb:
tjekreal:

Filen: TEST0.jpg blevet uploadet
Avatar billede jakobdo Ekspert
23. januar 2009 - 17:25 #43
Test lige denne kode:

$nr = 1;
$tjekthumb    = "Billeder/" . $regs[1] . "" . $nr . "_thumb." . $regs[2];
$tjekreal    = "Billeder/" . $regs[1] . "" . $nr . "_real." . $regs[2];

while(!is_file($tjekthumb) && !is_file($tjekreal)){
    $tjekthumb    = "Billeder/" . $regs[1] . "" . $nr . "_thumb." . $regs[2];
    $tjekreal    = "Billeder/" . $regs[1] . "" . $nr . "_real." . $regs[2];
    $nr++;
}
Avatar billede andreas13_fam Nybegynder
23. januar 2009 - 18:32 #44
Hva' ****** er det for en dræber lykke :D

Fatal error: Maximum execution time of 120 seconds exceeded in /home/amwebdk/public_html/Portal/WWW_Kogebogen/MySQL/Opret-opskrift/Opret-se_MySQL.php on line 94

94 = while(!is_file($tjekthumb) && !is_file($tjekreal)){

Betyder --> !(is file()) <-- ikke hvis filen ikke eksisterer.
Og skal $nr++ ikke også være før $tjekthump
Avatar billede andreas13_fam Nybegynder
23. januar 2009 - 18:35 #45
$nr = 1;
        $tjekthumb    = "Billeder/" . $regs[1] . "" . $nr . "_thumb." . $regs[2];
        $tjekreal    = "Billeder/" . $regs[1] . "" . $nr . "_real." . $regs[2];

        while(is_file($tjekthumb) && is_file($tjekreal))
        {
    $nr++;
    $tjekthumb    = "Billeder/" . $regs[1] . "" . $nr . "_thumb." . $regs[2];
    $tjekreal    = "Billeder/" . $regs[1] . "" . $nr . "_real." . $regs[2];
        }

Virker :D
Avatar billede andreas13_fam Nybegynder
23. januar 2009 - 18:51 #46
Det ser ud til at virke mange tak, lig et svar :D
Avatar billede jakobdo Ekspert
23. januar 2009 - 20:26 #47
Jo, det skal selvfølgelig være is_file() og ikke !is_file()
Du får et svar.
Avatar billede andreas13_fam Nybegynder
23. januar 2009 - 23:33 #48
tak :D
Avatar billede jakobdo Ekspert
24. januar 2009 - 08:48 #49
Takker for point.
Betyder det alt virker nu ?
Avatar billede andreas13_fam Nybegynder
24. januar 2009 - 11:41 #50
Ja alt virker nu, mit næste problem er at søger for at den ikke uploader det samme billede igen og igen hvis man trykker på knapen mere end en gang. Men det tror jeg nu godt at jeg kan løse selv.

Til arkivet så ses hele koden her.

<form method="post" action="denne side.php" enctype="multipart/form-data">
<input type="hidden" name="MAX_FILE_SIZE" value="1000000" />
<input type="file" name="minfil" /> Max 1 MB
<input type="submit" value=" Test opskrift " />
</form>


<?php
$filnavn = "Intet-billede.jpg";

if ($_FILES['minfil']) //Har brugeren forsøgt at uploade noget?
{
    if (preg_match("/^([^\.]+)\.(jpg|png|gif|bmp)$/", $_FILES['minfil']['name'], $regs))
    {

        /*******************
        /hent billedelaver /
        *******************/
    require_once('MySQL/Plugin/class.imagemake_MySQL.php');
 
        /*******************
        /ændre filnavnet  /
        *******************/
        $nr = 1;
        $tjekthumb    = "Billeder/" . $regs[1] . "" . $nr . "_thumb." . $regs[2];
        $tjekreal    = "Billeder/" . $regs[1] . "" . $nr . "_real." . $regs[2];

        while(is_file($tjekthumb) && is_file($tjekreal))
        {
    $nr++;
    $tjekthumb    = "Billeder/" . $regs[1] . "" . $nr . "_thumb." . $regs[2];
    $tjekreal    = "Billeder/" . $regs[1] . "" . $nr . "_real." . $regs[2];
        }
        /*******************
        /laver standart var/
        *******************/   
    $filnavn = $regs[1] . "" . $nr . "." .$regs[2];
   
    $bufdestination     = "Billeder/" . $regs[1] . "" . $nr . "_buf." . $regs[2];
    $thumbdestination = "Billeder/" . $regs[1] . "" . $nr . "_thumb." . $regs[2];
    $realdestination     = "Billeder/" . $regs[1] . "" . $nr . "_real." . $regs[2];

        /*******************
        /flyt tmp til _buf /
        *******************/
        if (move_uploaded_file($_FILES['minfil']['tmp_name'], $bufdestination))
        {
    echo '<div style="text-align:left">Filen: '.$filnavn.' blevet uploadet</div>';
    //<
            /*******************
            /find højde+brædde /
            *******************/
        $info = getimagesize("$bufdestination");
        $infobredde = $info[0];
        $infohojde = $info[1];

            /*******************
            /thumb udregner    /
            *******************/           
            if ($infohojde < $infobredde)
            {
            $thumpforhold = "$infobredde / 280";
            $thumprelativhojde = "$infohojde / $thumpforhold";
            $thumpbredde = "280";
            $thumphojde = round($thumprelativhojde);
            }
            elseif ($infobredde < $infohojde)
            {
            $thumpforhold = "$infohojde / 280";
            $thumprelativbredde = "$infobredde / $thumpforhold";
            $thumphojde = "280";
            $thumpbredde = round($thumprelativbredde);           
            }
           
            elseif ($infobredde == $infohojde)
            {
            $thumphojde = "280";
            $thumpbredde = "280";
            }
            $thumpquality = 65;
            /*******************
            /real udregner    /
            *******************/
            if ($infohojde < $infobredde)
            {
            $realforhold = "$infobredde / 700";
            $realrelativhojde = "$infohojde / $realforhold";
            $realbredde = "700";
            $realhojde = round($realrelativhojde);
            }
            elseif ($infobredde < $infohojde)
            {
            $realforhold = "$infohojde / 700";
            $realrelativbredde = "$infobredde / $realforhold";
            $realhojde = "700";
            $realbredde = round($realrelativbredde);           
            }
            elseif ($infobredde == $infohojde)
            {
            $realhojde = "700";
            $realbredde = "700";
            }
            $realquality = 90;
            /*******************
            /Gemmer thumb img  /
            *******************/           
            try
        {
            $image = new image($bufdestination);
            $image->quality($thumpquality);
            $image->resize($thumpbredde,$thumphojde);
            $image->watermark('img/vandmaerke.png', 'RIGHT','BOTTOM');
            $image->save($thumbdestination);
            }
            catch(Exception $e)
            {
            echo 'Exception Caught : <b >' . $e->getMessage() . '</b>';
            }
           
            /*******************
            /Gemmer real img  /
            *******************/       
            try
        {
            $image = new image($bufdestination);
            $image->quality($realquality);
            $image->resize($realbredde,$realhojde);
            $image->watermark('img/vandmaerke.png', 'RIGHT','BOTTOM');
            $image->save($realdestination);
            }
            catch(Exception $e)
            {
            echo 'Exception Caught : <b >' . $e->getMessage() . '</b>';
            }
           
            /*******************
            /Sletter buf fil  /
            *******************/
            if (is_file("$bufdestination")) //Tjek om filen findes
            {
                unlink("$bufdestination"); //Sletter fillen
            }

    }
    else
    {
    echo '<div style="text-align:left">Der er sket en fejl</div>';
    }
  }
    else
    {
    echo '<div style="text-align:left">Intet billede uploaded,<br /> bruger standart billede.</div>';
    }
}

?>
Avatar billede jakobdo Ekspert
24. januar 2009 - 14:52 #51
Det kan du nemt løse.
Efter du har uploadet billedet korrekt, så laver du en:

header('Location: denne_side.php')
exit();

Så bør man ikke kunne lave F5 og uploade igen og igen.
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