Avatar billede tipman Juniormester
21. september 2010 - 20:03 Der er 8 kommentarer og
1 løsning

Upload file

Jeg forsøger at uploade fil til en undermappe "dbupload" som ligger i roden.
Min kode er:
<?php
$navn=$_POST['navn'];
$test=$_POST['test'];
$opskrift=nl2br($_POST['opskrift']);
$dato_array=getdate();
$dato=$dato_array["mday"].". ".$dato_array["month"]." ".$dato_array["year"];


if(($test=="rullebaren") && ($navn!=="")){
    include 'dbopen.php';
    if(isset($_POST['send']) && $_FILES['userfile']['size'] > 0) //aflæser filens informationer
    {
        $targetpath='dbupload/';
        $targetpath=$targetpath.basename($_FILES['userfile']['name']);
        echo $targetpath;
        echo $_FILES['userfile']['tmp_name'];
        if(move_uploaded_file($_FILES['userfile']['tmp_name'], $target_path)) {
        echo "The file ".  basename( $_FILES['userfile']['name']).
        " has been uploaded";
        } else{
            echo "There was an error uploading the file, please try again!";   
        }
        exit;
        $fileName = $_FILES['userfile']['name'];
        $tmpName  = $_FILES['userfile']['tmp_name'];
        $fileSize = $_FILES['userfile']['size'];
        $fileType = $_FILES['userfile']['type'];
        $fp      = fopen($tmpName, 'r');
        $content = fread($fp, filesize($tmpName));
        $content = addslashes($content);
        fclose($fp);
        if(!get_magic_quotes_gpc())
        {
          $fileName = addslashes($fileName);
        }
    }
}
?>


Mit resultat er fx:
./dbupload/img_4848.jpg/customers/rullebaren.dk/rullebaren.dk/tmp/phpm199XsThere was an error uploading the file, please try again!

Mappen dbupload eksisterer i forvejen, men der flyttes ikke nogen fil til mappen. Hvad kan der være galt.
Mit script virker sådan set, idet det som kommer efter exit virker fint og putter filen i databasen. Men jeg ønsker også at få filen i en mappe. Jeg kan ikke lige se mig ud af hvad der kan være galt.
Avatar billede majbom Novice
21. september 2010 - 20:22 #1
hvad er rettighederne på den mappe der skal overføres til?
Avatar billede tipman Juniormester
21. september 2010 - 20:29 #2
øhhh, jeg vil mene at systemet har ret til den. Jeg kan da gemme filer i den med ftp. Men hvordan finder man lige ud af rettighederne?
Skulle php normalt ikke have rettigheder, når det afvikles fra samme domæne? Det ligger hos one.com.
Avatar billede rix Novice
21. september 2010 - 20:49 #3
prøv at finde den mappe du ville gemme det i
højere klik og så er der en muglighed der heder noget med rettigheder
der går du ind og krydser skriv til
og prøv igen det skulle nok virke
Avatar billede majbom Novice
21. september 2010 - 20:58 #4
chmod mappen til 0777, det kan du gøre med de fleste ftp-klienter
Avatar billede tipman Juniormester
21. september 2010 - 21:25 #5
har jeg gjort, men det er ikke løsningen på mit problem.
Avatar billede Slettet bruger
22. september 2010 - 01:16 #6
move_uploaded_file(
    $_FILES['userfile']['tmp_name']
    ,
    $_SERVER["DOCUMENT_ROOT"]."/dbupload/".basename($_FILES['userfile']['name'])
);

(Jeg ville nok give filen mit eget (unique()) navn stedet for det som måtte komme ind via $_FILES['userfile']['name'] - basename() skulle trække de væste hacker-tænder ud, men du risikerer stadig at overskrive en evt. eksisterende fil med samme navn)
Avatar billede tipman Juniormester
22. september 2010 - 18:14 #7
Jeg vil prøve dette. Filen skal bare ligge der midlertidig, den skal bearbejdes og derefter læses ind i databasen, hvor den får et unikt nummer. Uploaderen har ikke brug for filnavnet efter upload.
Avatar billede tipman Juniormester
22. september 2010 - 18:19 #8
Jeps T4NK3R, vil du sende svar hvis du vil have point?
Ved du hvorfor min anden version ikke virkede?
Avatar billede Slettet bruger
22. september 2010 - 20:56 #9
Nok pga. din targetpath var relativ til php-filen...
- resulterende i em mappe der ikke fandtes. Måske : )
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