Avatar billede bmdk Nybegynder
04. november 2008 - 15:43 Der er 10 kommentarer

uploader ikke billede

Hey eksperten,

Er igang med et script til at uploade billeder til mit webhotel. Mit problem er bare, at billedet ikke bliver uploaded, selvom alle stier osv burde være korrekte.

Mit script:

<?php
session_start();
if($_SESSION['access'] == "true") {
require_once("classes/dbconn.php");
$db = new DbConnector();
$db->connect();
$oprettetaf = $_SESSION['name'];
$_SESSION['mappenavn'] = strtolower(str_replace(" ", "_", $_POST['gallerinavn']));
$mappenavn = $_SESSION['mappenavn'];

if(isset($_POST['opretgalleri'])) {
  mkdir($_SERVER['DOCUMENT_ROOT'].'/gallery/'.$mappenavn);
  chmod("./gallery/$mappenavn/",0777);
}

if(isset($_POST['upload'])) {
  $dir = $_POST['mappenavn'];
  $dist = $_SERVER['DOCUMENT_ROOT'].'/gallery/'.$dir.'/';

  for ($i=0;$i<10;$i++) {
    if (is_uploaded_file($_FILES['upfil']['tmp_name'][$i])) {
      $filnavn = $_FILES['upfil']['name'][$i];
      $tempnavn = $_FILES['upfil']['tmp_name'][$i];
      $sti = $dist;
      move_uploaded_file($tempnavn, $sti . $filnavn);
      echo "$filnavn er uploadet!<br /><br />";
      echo $dist . $filnavn;
  }
}

} else {
  echo "
    <form action=\"index.php?page=uploadpics\" method=\"post\" enctype=\"multipart/form-data\">";
    for ($i=1;$i<11;$i++) {
      echo "<input type=\"file\" name=\"upfil[]\" size=\"20\">";
      if ($i%2 == 0)
        echo "<br /><input type=\"hidden\" value=$mappenavn name=\"mappenavn\">";
    }
    echo "<input type=\"submit\" value=\"Send filer\" name=\"upload\">
    </forms>
  ";
}

} else {
    header("location: /");
}

?>

Først fandt jeg ud af, at den simpelthen ikke huskede på $mappenavn sessionen (nok fordi siden kalder sig selv), så jeg lavede et lille 'hack' med et hidden field i den sidste form.

Som sagt, så laver den fint mappen og udskriver også den korrekte sti når jeg har kørt scriptet:

/hsphere/local/home/hellum/kvarterets-drenge.dk/gallery/testgallery/testpic.jpg

Jeg har også dobbelttjek'et at mappe(r)ne er CHMOD'et til 777.

Nogen forslag?
Avatar billede kjeldsted Novice
04. november 2008 - 17:40 #1
Hvad får du af fejl? Nogen fejlmelding fra PHP?
Avatar billede bmdk Nybegynder
04. november 2008 - 17:43 #2
Nej, ingen fejlmeddelelse :)
Avatar billede bmdk Nybegynder
04. november 2008 - 17:44 #3
Hvis jeg fjerner mit hidden field (dvs så den bliver fortalt at den bare skal uploade i gallery//, så smider den fint nok billedet op i gallery.. Det synes jeg er lidt ekstra underligt hehe
Avatar billede kjeldsted Novice
04. november 2008 - 23:22 #4
Hvis du godt må ligge filerne i ./gallery/ men ikke i ./gallery/mappe/ så er det ./mappe der er problemet. Dog plejer det at hjælpe at sætte rettighederne til 777, men hvis det allerede er gjort, ved jeg nok ikke lige hvad jeg skal gøre. Har ikke 100% tjek på det med server indstillinger.
Avatar billede bmdk Nybegynder
05. november 2008 - 08:29 #5
Hey kjeldsted,

Forstår bare ikke, hvis det er ./mappe der er problemet. Scriptet chmod'er det godt nok til 777 hver gang der laves en ny mappe.

Tog lige et screenshot af en nyoprettet mappe (oprettet via scriptet)

http://www.bo-mortensen.dk/chmod.jpg
Avatar billede bmdk Nybegynder
05. november 2008 - 08:29 #6
Går ud fra der ikke er nogen forskel på 777 og 0777 ? :)
Avatar billede kjeldsted Novice
06. november 2008 - 08:33 #7
Så  længe alle tre felter står på både Read og Write, er der ikke problemer med chmod'et.

Jeg kan faktisk ikke svare på hvad der første '0' kommer af. Jeg plejer at benytte 777.

Der kan dog være nogle andre problemer med nogle andre indstillinger. Men hér må jeg nok melde pas. Har faktisk kun programmeret i lidt over 3 år, så kan desværre kun hjælpe med problemer i koden.

Men lige én ting. Ret:

echo "<br /><input type=\"hidden\" value=$mappenavn name=\"mappenavn\">";

til

echo "<br /><input type=\"hidden\" value=\"$mappenavn\" name=\"mappenavn\">";
Avatar billede bmdk Nybegynder
06. november 2008 - 10:10 #8
Jep, har godt nok rettet value hehe, så det selv igår. Det virker dog stadig ikke.

Hvis jeg skriver 777 istedet for 0777, så bliver mappen ikke chmod'et til 777 :) Men jeg tror du har ret: det er ikke chmod, der er noget galt med her.

Tak for hjælpen ellers :)

/Bo
Avatar billede kjeldsted Novice
06. november 2008 - 21:32 #9
Hvorfor kører du desuden strtolower() på mappenavnet?
Avatar billede bmdk Nybegynder
06. november 2008 - 22:54 #10
Hmm, ikke af nogen særlig grund tror jeg :) tror bare jeg synes det var pænest, men det er selvfølgelig ikke nødvendigt, kan jeg godt se..
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