Avatar billede heden Nybegynder
21. april 2005 - 13:48 Der er 9 kommentarer og
1 løsning

Hvorfor gider den ik opligge billede?

Hejza alle sammen.

Kan i svare mig på hvorfor min kode siger:


Warning: move_uploaded_file(xxxxxx/xxxx/xxxxxx/xxx/01.jpg): failed to open stream: HTTP wrapper does not support writeable connections. in xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx on line 133

Warning: move_uploaded_file(): Unable to move 'C:\WINDOWS\TEMP\php6893.tmp' to 'http://xxxxxx/xxx/xxxxx/1.jpg' in xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx on line 133

Koden ser sådan ud:
<?php
   
    require( "db.php" );

    function handleFile( $feltnavn )
    {
        $filetyper = array(
                "image/gif"
                ,"text/html"
                ,"text/plain"
                ,"image/jpeg"
                ,"image/pjpeg"
                ,"image/png"
                ,"application/x-zip-compressed"
                ,"application/octet-stream"
            );

        //stien, hvortil filerne skal placeres 
        $dist = "http://xxxxxx/xxxxxx/xxxxxxx/";

        //Tjek om der er en fil, samt om den overholder filtypen som kan uploades
        if ( isset( $_FILES[$feltnavn]['name'] ) && $_FILES[$feltnavn]['name'] == "")
        {
            echo"Ingen fil valgt! <a href=\"$_SERVER[HTTP_REFERER]\">tilbage</a>";
            exit;

        }
        elseif ( !in_array( $_FILES[$feltnavn]['type'], $filetyper ) )
        {
            echo "Ikke tilladt til upload! <a href=\"$_SERVER[HTTP_REFERER]\">tilbage</a>";
            exit;
        }

        if ( isset( $_FILES[$feltnavn]['name'] ) && $_FILES[$feltnavn]['name'] !="" )
        {   
            if( is_uploaded_file( $_FILES[$feltnavn]['tmp_name'] ) )
            {
                //Flyt filen fra upload-tmp til et dir. Husk at ændre "$dist" ovenover så det passer med din server :O)
                move_uploaded_file( $_FILES[$feltnavn]['tmp_name'], $dist . $_FILES[$feltnavn]['name'] );
                return true;
            }
        }
        return false;
    }
   
    $url = "http://xxxxxxxx/xxxxxx/xxxxxx/";

    if (isset( $_FILES['pic'] ) && handleFile( 'pic' ))
    {
        $pic = $url . $_FILES['pic']['name'];
    }
   
    $sql = "
        INSERT INTO
            xxxxxxx
        (
            xxx
            ,xxx
            ,xxx
            ,pic

        )
        VALUES
        (
            '$_POST[xxx]'
            ,'$_POST[xxx]'
            ,'$_POST[xxx]'
            ,'$pic'
        )
        ";

    mysql_query( $sql ) or die(mysql_error());   

    mysql_close();

?>


den ligger fint alt op i min database, både stien til billede de andre ting! men den vil bare ikke ligge billede op på min server.
Avatar billede sukos Juniormester
21. april 2005 - 16:40 #1
Du kan ikke bruge en url til at gemme filer, men den fulde sti på harddisken vil virke fint.

Og hvorfor putte "typer" i en function?
Avatar billede sukos Juniormester
21. april 2005 - 16:42 #2
Og kan ikke lige se "strukturen" i dit script, andet end noget af det ligner kode fra et uploadscript jeg engang lavede. :O)
Avatar billede heden Nybegynder
21. april 2005 - 21:06 #3
Jamen det virker fint på den anden side jeg brugte det på, og det skal nok passe det var dig der har hjulpet mig med det dengang :) .. Men kan du se hvad fejlen skulle være, for mener det samme problem er der når man kun bruger ../mappe/ i dist..
Avatar billede sukos Juniormester
22. april 2005 - 12:04 #4
Prøv med den fulde sti:
$dist = $_SERVER["DOCUMENT_ROOT"] ."/dir/";

Tjek evt. at "dirsti" er ens med

echo $_SERVER["DOCUMENT_ROOT"] ." - ". $_SERVER["PATH_TRANSLATED"];
Avatar billede heden Nybegynder
25. april 2005 - 09:30 #5
når jeg lavet det echo skriver den:

- D:\\xxxx\\xxxx\\xxxx\\subdomains\\xxx\\xxxx\\xxx\\xxxxx\\oplig_kontakt.php

ved ikke om det siger dig noget :(? .. for normalt virker dette script fint
Avatar billede sukos Juniormester
28. april 2005 - 05:46 #6
Er det et subdomain? Og er de sidste tre krydser dit dir?
D:\\xxxx\\xxxx\\xxxx\\subdomains\\xxx

Så prøv:
$dist = "D:\\xxxx\\xxxx\\xxxx\\subdomains\\xxx\\dir_hvor_fil_skal_ligge\\";
Avatar billede heden Nybegynder
29. april 2005 - 09:41 #7
Jeg har fået det til at funke ;) med et andet script. ved ik hvad der var galt. MEn smid et svar så finder vi ud af det :D
Avatar billede sukos Juniormester
30. april 2005 - 03:21 #8
johh, men koden til det andet script ville jo være ok :O)
Avatar billede heden Nybegynder
09. maj 2005 - 14:23 #9
<?php
          include '../db.php';
if (isset($_FILES['upfile'])) {
  $filetyper = array("image/gif", "text/html", "text/plain", "image/jpeg", "image/pjpeg", "image/png", "application/x-zip-compressed", "application/octet-stream"); 
  if (isset($_FILES['upfile']['name']) && $_FILES['upfile']['name'] == "") {
    echo"Ingen fil valgt! <a href=\"opret.php\">tilbage</a>";
  } elseif (!in_array($_FILES['upfile']['type'], $filetyper)) {
    echo "Ikke tilladt til upload! <a href=\"opret.php\">tilbage</a>";
  }
  if (isset($_FILES['upfile']['name']) && $_FILES['upfile']['name'] !="") {
    if(is_uploaded_file($_FILES['upfile']['tmp_name'])) {
      $uldir = '/xxxx/';
      $ulfile = $uldir.basename($_FILES['upfile']['name']);
      move_uploaded_file($_FILES['upfile']['tmp_name'], $ulfile);
    }
  }
}
$navn = $_POST[navn];
$email = $_POST[email];
$uvis = $_POST[uvis];
$upfile = $_POST[upfile];
$upfile = "http://xxxxxx/" . $_FILES['upfile']['name'];
mysql_query("INSERT INTO xxx (navn, email, uvis, upfile) VALUES ('$navn', '$email', '$uvis', '$upfile')") or die(mysql_error());
echo "<div align=\"center\" class=\"tekst_linkThin\">Kontakt personen blev oprettet</div>";
?>


så
Avatar billede heden Nybegynder
09. maj 2005 - 14:23 #10
-lukket-
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