Avatar billede junold Nybegynder
11. april 2008 - 19:25 Der er 25 kommentarer og
1 løsning

Galleri, fejler online!

Jeg har et lille galleri, som virker fint lokalt. Men når jeg ligger det op på min side, uploader den ikke noget! Den kommer ikke med nogen fejl af nogen art. Det ser ud som om den ligger stien i databasen rigtigt, men billedet bliver ikke lagt op.
Mappen har "777" rettigheder, så det burde ikke være der problemet er.

Funktionen jeg bruger til upload:
function imageupload($fieldarray)
    {
        $data2;
        $_SESSION['usr'] = "10";
        $id = $_SESSION['usr'];
        $dir = 'upload/';
        $types = array('jpg','png');
        $idag_timestamp = strtotime("now");
       
        if(isset ($fieldarray))
       
        {
          if(!is_uploaded_file($fieldarray['newimage']))
            {
              $extension = strtolower(pathinfo($fieldarray['newimage'],PATHINFO_EXTENSION));
              if(in_array($extension,$types))
              { 
                if(!move_uploaded_file($fieldarray['newimage'],$dir . basename($fieldarray['newimage'])))
              {
             
                  $name1 = $_SESSION['username'];
                  copy($fieldarray['newimage'], $dir.$idag_timestamp.".".$extension);
              }//end if (move_uploaded...
              else
              {
                $error = "FEJL! - Kan ikke uploade billede:" .basename($fieldarray['newimage']);
              }//end else
            }//end if (in_array...
            else
            {
              $error = "Forkert filtype, tilladte filtyper/billedetyper er: (".implode(', ',$types).")";
             
            }//end else
          }//end if (is_uploaded...
          else
          {
            $error = 'Prøv igen, du har ikke valgt en fil/et billede.';
          }//end else
         
          if (!isset($error))
          {
        //$path = $dir.$name;
        $fieldarray['imagename'] = $idag_timestamp;
        $fieldarray['path'] = $dir.$idag_timestamp.".".$extension;
        $fieldarray['filetype'] = $extension;
        $objInsert = new images;
        //var_dump ($fieldarray);
        $objInsert ->insertRecord($fieldarray);
          }//end if isset error
          }//end if (isset($_post...
    }//end function image

$fieldarray ser sådan her ud når jeg kører det offline:
array(6) { ["newimage"]=> string(74) "C:\Documents and Settings\Touch my tra la la\Dokumenter\Billeder\efter.jpg" ["event"]=> string(1) "g" ["userID"]=> string(1) "1" ["imagename"]=> int(1207934669) ["path"]=> string(21) "upload/1207934669.jpg" ["filetype"]=> string(3) "jpg" }

Og online ser den sådan har ud:
array(6) { ["newimage"]=> string(79) "C:\\Documents and Settings\\Touch my tra la la\\Dokumenter\\Billeder\\efter.jpg" ["event"]=> string(3) "smp" ["userID"]=> string(1) "1" ["imagename"]=> int(1207934706) ["path"]=> string(21) "upload/1207934706.jpg" ["filetype"]=> string(3) "jpg" }

Er der nogen der kan se hvad jeg gør galt?
Avatar billede coderdk Praktikant
11. april 2008 - 20:23 #1
Det undrer mig at det virker for dig lokalt. is_uploaded_file / move_uploaded_file skal bruge $_FILES['dit_file_felt']['tmp_name'] du kan ikke bare give den filnavnet
Avatar billede junold Nybegynder
11. april 2008 - 20:38 #2
Jeg er ikke helt sikker på jeg forstår hvad du mener? Den får da både dir, og filnavnet?
Avatar billede coderdk Praktikant
11. april 2008 - 20:46 #3
Prøv lige at lave en

var_dump( $_FILES );

på siden når du uploader og se hvad der sker ;P is_uploaded_file og move_uploaded_file skal bruge tmp_name til at checke/flytte filen...
Avatar billede junold Nybegynder
11. april 2008 - 20:53 #4
Jammen der står tilsyneladende intet i den... "array(0) { }"
Avatar billede junold Nybegynder
11. april 2008 - 20:54 #5
Den er null både on og offline..
Avatar billede dkfire Nybegynder
11. april 2008 - 21:04 #6
Hvordan kalder du din funktion og hvordan ser din form ud ??
Hvis $_FILES ikke indeholder noget, så virker din funktion hverken offline eller online.
Avatar billede junold Nybegynder
11. april 2008 - 21:07 #7
Jammen den uploader altså billederne når man er på wamp server lokalt...
Formen er her:
<?php
try {
    if(!@include('../../classes/users.class.php')) {
        throw new Exception('Failed to load blabla');
    }
       
}
catch(Exception $e) {
    //print $e->getMessage();
}
    require_once "images.class.php";
   
      $where = "username ='".$_SESSION['username']."'";
            $objUser = new users;
            $data = $objUser->getData($where);
            $userID = $data[0]['userID'];
   
    if($_POST)
    {
    images::imageupload($_POST);
           
    header("Location: ../../admin.php?type=image");
    }
?>
<div class="content">   

    <div id="contentheader">
        <img src="images/ico_wand.gif" alt="Opret nyt galleri" />
        <h2>Nyt galleri/billede<br /><span>Opret nyt galleri/billede</span></h2>
       
    </div>   
    <hr/>
<!--      <input class="textboxlong" type="file" name="newimage" />
        <input class="loginbutton" type="submit" name="uploadfil" value="Upload">';-->
       
<form action="modules/images/templ.imageadd.php" method="post" >
<table cellpadding="2" cellspacing="2" border="0">
    <tr>
        <td class="tdform">Fil:</td>
        <td><input class="textboxlong" type="file" name="newimage" /></td>
    </tr>
    <tr>
    <td class="tdform">Event:</td>
    <td><input type="text" class="textbox" name="event" /></td>
    <td><input type="hidden" class="tekstbox" name="userID" value="<?php echo $userID ?>"></td>
    </tr>
    <tr>
    <td><img src="images/ico_back.gif" alt="Tilbage" /> <a href="#" onclick="parent.location='admin.php?type=image'">Tilbage</a></td>
    <td><input type="submit" value="Upload"></td>
    </tr>
</table>
</form>

<div id="error">
<?php foreach ($objImage->errors as $field => $fieldvalue) echo "<h3>".$fieldvalue."</h3><br />";?>
</div>
Avatar billede dkfire Nybegynder
11. april 2008 - 21:12 #8
Den form uploader ingen filer, desværre. Du mangler en ekstra parameter til den form før det virker.

Du kan men stor fordel kigge på jakobdo's artikel om upload af filer.
http://www.eksperten.dk/artikler/1098
Avatar billede junold Nybegynder
11. april 2008 - 21:14 #9
Hvis i vil se funktionen insertRecord må i lige sige til. Men jeg kan ikke forstille mig det er den.
Avatar billede junold Nybegynder
11. april 2008 - 21:18 #10
dkfire, den uploader dem altså offline. Tro det eller ej.. Men hvilken parameter mangler jeg?

kigger lige på linket..
Avatar billede dkfire Nybegynder
11. april 2008 - 21:28 #11
Nej! den uploader dem IKKE, for det kan den ikke. Den form som du viser kan IKKE sende nogen filer.
Den eneste grund til at du tror den uploader er fordi php i stedet for filen, får adressen til filen, og efter som det er en lokal adresse kan den godt flytte billedet fra et sted til et andet, lokalt på din maskine. Men den uploader ALDRIG filen.
Avatar billede junold Nybegynder
11. april 2008 - 21:30 #12
Hvis det er " enctype="multipart/form-data" der mangler, så stopper den altså med at virke offline, hvis jeg smider den på. Men så er der data i $_FILES.. Den ser sådan her ud:
array(1) { ["newimage"]=> array(5) { ["name"]=> string(9) "efter.jpg" ["type"]=> string(11) "image/x-png" ["tmp_name"]=> string(14) "/tmp/phpIsNlUP" ["error"]=> int(0) ["size"]=> int(15556) } }
Avatar billede junold Nybegynder
11. april 2008 - 21:32 #13
Hehe ja ok, godt ord igen. ;) Men nu kom der da data i $_FILES.. Nu kommer filen bare ikke med.
Avatar billede dkfire Nybegynder
11. april 2008 - 22:55 #14
Jo nu kommer filen nemlig med.
Uploaded filer gemmes normalt i en midlertig mappe på serveren inden de flyttes til den rigtige mappe.
Den midlertidig navn kan du få ved $_FILES['newimage']['tmp_name']
Men læs artiklen igennem, så vil du lærer meget mere om hvad du skal gøre, bl.a. hvordan du bruger move_uploaded_file() rigtig.
Avatar billede coderdk Praktikant
12. april 2008 - 00:13 #15
Hvad dkfire skrev! :)
Avatar billede junold Nybegynder
12. april 2008 - 12:28 #16
Skal jeg så bruge $_FILES istedet for $_POST? Eller hvordan skal jeg skrue det sammen?
Avatar billede dkfire Nybegynder
12. april 2008 - 14:21 #17
Hvis du har læst artiklen så ville du vide det, men ja du skal bruge $_FILES til de filer som er uploaded og $_POST til data som bliver sendt.
Avatar billede junold Nybegynder
12. april 2008 - 16:55 #18
Jeg fik den til at uploade, men filen hedder noget med "phph9xR0C" og kan ikke læses... Har prøvet at hente den og omdøbe den til .jpg, men den ser ud som om den er kurrupt... :(  Går næsten ud fra det er i den her der er noget galt?

if(in_array($extension,$types))
              { 
                     
                  //var_dump($fieldarray['newimage']);
                if(!move_uploaded_file($fieldarray['newimage']['tmp_name'],$dir . basename($fieldarray['newimage']['tmp_name'])))
              {
                  $name1 = $_SESSION['username'];
                  copy($fieldarray['newimage']['tmp_name'], $dir.$idag_timestamp.".".$extension);
              }//end if (move_uploaded...
Avatar billede junold Nybegynder
12. april 2008 - 17:21 #19
Nå jeg fik det til at køre med den move_uploadet der var i artiklen, bare med ! foran..  :) Super!

Må vel næsten være dkfire's point?
Avatar billede coderdk Praktikant
12. april 2008 - 17:38 #20
Fint med mig.
Avatar billede dkfire Nybegynder
12. april 2008 - 18:28 #21
Helt iorden. Og det var godt du fik det til at virke.
Der findes en masse gode artikler her på eksperten som er værd at læse hvis man har problemer.
Avatar billede junold Nybegynder
12. april 2008 - 19:44 #22
Ja jeg skulle bare lige have det sidste skub i den riktige retning! :) Nu har jeg da et simpelt galleri.. Så kan man jo altid udvidde det!  Hvis i skulle være interesserede, ligger det her: http://click2create.dk
Avatar billede dkfire Nybegynder
12. april 2008 - 20:05 #23
Ja nogen gange har man bare brug for lidt vejvisning og et lille skub. ;-)
Ser ud til at være et spændende projekt I har gang i der. :-)
Avatar billede junold Nybegynder
12. april 2008 - 20:21 #24
Jo tak! Meget af det er allerede lavet. Det smarteste er de moduler, det gør det nemlig super let at lave funktionalliteter efter hvad der er brug for. Så skal man bare ligge modulet ind i en mappe, og "installere" det...
Avatar billede dkfire Nybegynder
12. april 2008 - 21:05 #25
Hvor har I fået ideen til moduler ??
Har I selv lavet alt fra grunden ?
Avatar billede junold Nybegynder
12. april 2008 - 21:14 #26
Det er mig der har kodet det. :) De andre laver dokumentation, og en C# del, der kan uploade siden til ens domæne.. Der kan man også smide et par ting på, så man ikke starter med en tom side. Også min ide med modulerne.. Jeg har kodet det med udgangspunkt i et projekt jeg lavede med en kammerat tidligere. :)
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