Avatar billede human Nybegynder
02. september 2004 - 23:04 Der er 9 kommentarer og
1 løsning

upload script erstatter ikke

Heysa!

Jeg har dette upload script, men har jeg en fil som fx hedder bruger.jpg, brugeren uploader så igen et nyt billede, og filen kommer til at hedde det samme. nemlig burger.jpg. For scriptet giver fil navnet efter brugeres navn. Så hvordan får jeg dette script til også at erstatte en fil, hvis den allerede eksistere i mappen?

if(isset($_POST['upload']) && $_POST['upload']) {
$maxfilesize = 32000;
if (!is_uploaded_file($_FILES['userphoto']['tmp_name'])) {
    $error = "Du valgte ikke nogen fil der skulle uploades!<br />";
} else {
    if ($_FILES['userphoto']['size'] > $maxfilesize) {
        $error = "Dit billede fylder for meget!<br />";
    } else {
        $ext = strrchr($_FILES['userphoto']['name'], ".");
        if ($ext != ".jpg" AND $ext != ".jpeg" AND $ext != ".JPEG" AND $ext != ".JPG") {
            $error = "Din fil var ikke af den rigtige type!<br />";
        } else {
            if ($_SESSION['photo'] != "nopic.jpg") {

            }
            $newname = $_SESSION['username'].$ext;
            move_uploaded_file($_FILES['userphoto']['tmp_name'],"/profile_photos/".$newname);
            mysql_query("UPDATE du_users SET photo='$newname',photo_acc='2' WHERE username='$Bruger'") or die (mysql_error());
            $_SESSION['photo'] = $newname;

        }
    }
}
if ($error) {
    print "Dit billede kunne ikke uploades fordi: ".$error.".";
} else {
    print "";
}

        }
Avatar billede dennismp Nybegynder
02. september 2004 - 23:11 #1
Gør den ikke allerede det - så den bare overskriver?

men ellers lige før move_upload_file(..)

// slet fil, hvis den allerede findes
if( file_exists("/profile_photos/".$newname) )
  unlink("/profile_photos/".$newname);
Avatar billede dennismp Nybegynder
02. september 2004 - 23:13 #2
er det meningen at det er /profile_photos/bruger.jpg ? Det virker nemlig lidt mystisks at du ligger det i roden (af serveren) :)
Avatar billede human Nybegynder
02. september 2004 - 23:21 #3
Virkede ikke :/

DU mener det skal se således ud ikke:

if(isset($_POST['upload']) && $_POST['upload']) {
$maxfilesize = 32000;
if (!is_uploaded_file($_FILES['userphoto']['tmp_name'])) {
    $error = "Du valgte ikke nogen fil der skulle uploades!<br />";
} else {
    if ($_FILES['userphoto']['size'] > $maxfilesize) {
        $error = "Dit billede fylder for meget!<br />";
    } else {
        $ext = strrchr($_FILES['userphoto']['name'], ".");
        if ($ext != ".jpg" AND $ext != ".jpeg" AND $ext != ".JPEG" AND $ext != ".JPG") {
            $error = "Din fil var ikke af den rigtige type!<br />";
        } else {
            if ($_SESSION['photo'] != "nopic.jpg") {
                          }
            $newname = $_SESSION['username'].$ext;
            move_uploaded_file($_FILES['userphoto']['tmp_name'],"/profile_photos/".$newname);
            // slet fil, hvis den allerede findes
        if(file_exists("/profile_photos/".$newname) )
            unlink("/profile_photos/".$newname);
            mysql_query("UPDATE du_users SET photo='$newname',photo_acc='2' WHERE username='$Bruger'") or die (mysql_error());
            $_SESSION['photo'] = $newname;

        }
    }
}
if ($error) {
    print "Dit billede kunne ikke uploades fordi: ".$error.".";
} else {
    print "";
}

        }
Avatar billede human Nybegynder
02. september 2004 - 23:25 #4
Men ja, de skal ligge hvor jeg har skrevet :)
Avatar billede dennismp Nybegynder
02. september 2004 - 23:26 #5
Nje, den skal foran move_uploaded file.. ellers flytter du filen og sletter den (nye)..


MEN det virker altså meget mystisk at du bruger stien /profile_photos/ - det har man normalt ikke lov til - og slet ikke på webhoteller.. Er du sikker på at problemet ikke er, at den sti er forkert, og derfor ikke bliver flyttet (og dermed overskrifer den gamle fil) ?

Prøv engang at rette linjen til (punktum foran /profile_photos)
move_uploaded_file($_FILES['userphoto']['tmp_name'],"./profile_photos/".$newname);

og så fjerne det kode jeg bad dig om at indsætte..
Avatar billede dennismp Nybegynder
02. september 2004 - 23:26 #6
er det, din egen server?
Avatar billede human Nybegynder
02. september 2004 - 23:35 #7
Hvis jeg kunne kysse dig ville jeg gøre det..

Tænk så store problemer pga. et .

Du skal have mange tak, endnu engang :)

Nej det er ved wannafind..
Avatar billede human Nybegynder
02. september 2004 - 23:35 #8
smid et svar.
Avatar billede dennismp Nybegynder
02. september 2004 - 23:40 #9
Jeg sætter pris på at du ikke kan :)
Avatar billede human Nybegynder
03. september 2004 - 00:09 #10
:P
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