Avatar billede ravsted-dk Nybegynder
27. februar 2005 - 11:54 Der er 21 kommentarer og
1 løsning

Upload fil til mappe på hjemmesiden

Jeg har denne kode. Men den overskriver den fil som ligger på mappen, men hvordan forhindre jeg det

<?
if(isset($_GET[ok])) {

copy($_FILES["fil"]["tmp_name"],"".$_FILES["fil"]["name"]);

echo "Blev uploadet <a href=\"".$_FILES["fil"]["name"]."\" target=\"_blank\">her til</a>. <a href=\"?\">Upload igen her</a>";

} else {

echo '<form method="POST" action="?ok" enctype="multipart/form-data">';

echo '<p>Fil:<br><input type="file" name="fil"><p>';

echo '<p><input type="submit" value="Upload" name="submit"></p>';
echo '</form>';

}
?>
Avatar billede sjh Nybegynder
27. februar 2005 - 11:59 #1
så bruger du file_exists()

if (file_exists("filen")) {
  //-- Nyt navn på filen
}
Avatar billede coderdk Praktikant
27. februar 2005 - 12:04 #2
Du bør bruge is_uploaded_file og move_uploaded_file ;)

<?
    if ( !empty( $_FILES['fil'] ) && is_uploaded_file( $_FILES['fil']['tmp_name'] ) )
    {
        if ( !file_exists( $_FILES['fil']['name'] ) )
        {
            move_uploaded_file( $_FILES['fil']['tmp_name'], $_FILES['userfile']['name']
            echo "Blev uploadet <a href=\"".$_FILES["fil"]["name"]."\" target=\"_blank\">her til</a>. <a href=\"?\">Upload igen her</a>";
        }
        else
        {
            echo $_FILES['fil']['name'] . " eksisterer allerede.";
        }
    }
    else
    {
        echo '<form method="POST" enctype="multipart/form-data">';
        echo '<p>Fil:<br><input type="file" name="fil"><p>';
        echo '<p><input type="submit" value="Upload" name="submit"></p>';
        echo '</form>';
    }
?>
Avatar billede coderdk Praktikant
27. februar 2005 - 12:05 #3
Hov:

<?
    if ( !empty( $_FILES['fil'] ) && is_uploaded_file( $_FILES['fil']['tmp_name'] ) )
    {
        if ( !file_exists( $_FILES['fil']['name'] ) )
        {
            move_uploaded_file( $_FILES['fil']['tmp_name'], $_FILES['userfile']['name'] );
            echo "Blev uploadet <a href=\"".$_FILES["fil"]["name"]."\" target=\"_blank\">her til</a>. <a href=\"?\">Upload igen her</a>";
        }
        else
        {
            echo $_FILES['fil']['name'] . " eksisterer allerede.";
        }
    }
    else
    {
        echo '<form method="POST" enctype="multipart/form-data">';
        echo '<p>Fil:<br><input type="file" name="fil"><p>';
        echo '<p><input type="submit" value="Upload" name="submit"></p>';
        echo '</form>';
    }
?>
Avatar billede sukos Juniormester
27. februar 2005 - 12:05 #4
Du kan

if(isset($_GET[ok])) {

$newname = $_FILES["fil"]["name"];

$i = 0;
while (is_file($newname)) {
$i++;
$newname = sprintf("%03u", $i) ."_". $newname;
}

copy($_FILES["fil"]["tmp_name"],"".$newname);

echo "Blev uploadet <a href=\"".$_FILES["fil"]["name"]."\" target=\"_blank\">her til</a>. <a href=\"?\">Upload igen her</a>";
Avatar billede sukos Juniormester
27. februar 2005 - 12:08 #5
Og som sagt, bør du bruge move_uploaded_file()

if(isset($_GET[ok])) {

$newname = $_FILES["fil"]["name"];

$i = 0;
while (is_file($newname)) {
$i++;
$newname = sprintf("%03u", $i) ."_". $newname;
}

    if(is_uploaded_file($_FILES["upfile"]["tmp_name"])) {
    move_uploaded_file($_FILES["fil"]["tmp_name"],"".$newname);

echo "Blev uploadet <a href=\"".$_FILES["fil"]["name"]."\" target=\"_blank\">her til</a>. <a href=\"?\">Upload igen her</a>";

    }else{
    echo"Hacker forsøg????";
    }
Avatar billede sukos Juniormester
27. februar 2005 - 12:09 #6
HOv, skal jo så lige være $newname i linket til den fil som er blevet uploadet!
Avatar billede sukos Juniormester
27. februar 2005 - 12:19 #7
arghhhh, så'n er det sgu når man kopiere kode fra et script over i et andet........
<?php

if(isset($_GET[ok]) && trim($_FILES["fil"]["name"]) !="") {

$newname = $_FILES["fil"]["name"];

$i = 0;
while (is_file($newname)) {
$i++;
$newname = sprintf("%03u", $i) ."_". $newname;
}

    if(is_uploaded_file($_FILES["fil"]["tmp_name"])) {
    move_uploaded_file($_FILES["fil"]["tmp_name"],"".$newname);

echo "Blev uploadet <a href=\"".$_FILES["fil"]["name"]."\" target=\"_blank\">her til</a>. <a href=\"?\">Upload igen her</a>";

    }else{
    echo"Hacker forsøg????";
    }

} else {

echo '<form method="POST" action="?ok" enctype="multipart/form-data">';

echo '<p>Fil:<br><input type="file" name="fil"><p>';

echo '<p><input type="submit" value="Upload" name="submit"></p>';
echo '</form>';

}
?>
Avatar billede sukos Juniormester
27. februar 2005 - 12:26 #8
En gang til, og sidste....................


<?php

if(isset($_GET["ok"]) && trim($_FILES["fil"]["name"]) !="") {


if(file_exists($_FILES["fil"]["name"])) {

    $newname = $_FILES["fil"]["name"];

    $i = 0;
    while (is_file($newname)) {
    $i++;
    $newname = sprintf("%03u", $i) ."_". $newname;
    }
}

    if(is_uploaded_file($_FILES["fil"]["tmp_name"])) {
    move_uploaded_file($_FILES["fil"]["tmp_name"], $newname);

echo "Blev uploadet <a href=\"".$newname."\" target=\"_blank\">her til</a>. <a href=\"?\">Upload igen her</a>";

    }else{
    echo"Hacker forsøg????";
    }

} else {

echo '<form method="POST" action="?ok" enctype="multipart/form-data">';

echo '<p>Fil:<br><input type="file" name="fil"><p>';

echo '<p><input type="submit" value="Upload" name="submit"></p>';
echo '</form>';

}
?>
Avatar billede sukos Juniormester
27. februar 2005 - 12:34 #9
FUCK hvor jeg kager rundt i det!!!!!!!
Avatar billede sjh Nybegynder
27. februar 2005 - 12:36 #10
Ja du kunne godt lige læse din kode igennem før du poster den ;)
Avatar billede sjh Nybegynder
27. februar 2005 - 12:39 #11
og der mangler en / <P> på ... name="fil"><p> :D
Avatar billede sukos Juniormester
27. februar 2005 - 12:46 #12
En anden ting, så er det måske nok en go' ide at tjekke filnavn for special tegn.

<?php

if(isset($_GET["ok"]) && trim($_FILES["fil"]["name"]) !="") {


$newname = strtolower($_FILES["fil"]["name"]);

$bad = "\'*^´`+}{][£!§½%¤#=¨áàãââçéèêëìíîïñòóôõöùúûüýÿ?,\"/";
for($i = 0; $i < strlen($bad); $i++) {
$newname = str_replace($bad[$i], "", $newname);
}

$replace = array("æ" => "ae", "ø" => "oe", "å" => "aa", " " => "_");

$newname = strtr($newname, $replace);

    $i = 0;
    while (is_file($newname)) {
    $i++;
    $newname = sprintf("%03u", $i) ."_". $newname;
    }
  if(is_uploaded_file($_FILES["fil"]["tmp_name"])) {
    move_uploaded_file($_FILES["fil"]["tmp_name"], $newname);

echo "Blev uploadet <a href=\"".$newname."\" target=\"_blank\">her til</a>. <a href=\"?\">Upload igen her</a>";

    }else{
    echo"Hacker forsøg????";
    }

} else {

echo '<form method="POST" action="?ok" enctype="multipart/form-data">';

echo '<p>Fil:<br><input type="file" name="fil"></p>';

echo '<p><input type="submit" value="Upload" name="submit"></p>';
echo '</form>';

}
?>
Avatar billede ravsted-dk Nybegynder
27. februar 2005 - 13:21 #13
Coderdk, kommer du lige med et svar, det var lige det jeg manglede
Avatar billede coderdk Praktikant
27. februar 2005 - 13:32 #14
Yes yes :)
Avatar billede ravsted-dk Nybegynder
27. februar 2005 - 13:44 #15
Jeg får denne fejl

Warning: move_uploaded_file(): Unable to move '/tmp/php7S7WWq' to '' in /var/www/upload.php on line 6
Blev uploadet her til. Upload igen her
Avatar billede ravsted-dk Nybegynder
27. februar 2005 - 13:53 #16
Sukos virker også, så sukos, kommer du også lige med et svar.
Avatar billede coderdk Praktikant
27. februar 2005 - 13:53 #17
My bad! Linjen:

  move_uploaded_file( $_FILES['fil']['tmp_name'], $_FILES['userfile']['name'] );

Skulle være:

  move_uploaded_file( $_FILES['fil']['tmp_name'], $_FILES['fil']['name'] );
Avatar billede ravsted-dk Nybegynder
27. februar 2005 - 22:42 #18
Kan man også sætte en begrænsning på, så man kun kan uploade maks. 35 kb
Avatar billede coderdk Praktikant
27. februar 2005 - 22:45 #19
Yeps, det kan du gøre på to måder:

    <!-- MAX_FILE_SIZE must precede the file input field -->
    <input type="hidden" name="MAX_FILE_SIZE" value="35000" />

Eller du kan i dit script checke om $_FILES['fil']['size'] <= 35000
Avatar billede coderdk Praktikant
27. februar 2005 - 22:47 #20
F.eks.:

<?
    if ( !empty( $_FILES['fil'] ) && is_uploaded_file( $_FILES['fil']['tmp_name'] ) )
    {
        if ( !file_exists( $_FILES['fil']['name'] ) )
        {
            if ( $_FILES['fil']['size'] <= 35000 )
            {
                move_uploaded_file( $_FILES['fil']['tmp_name'], $_FILES['userfile']['name'] );
                echo "Blev uploadet <a href=\"".$_FILES["fil"]["name"]."\" target=\"_blank\">her til</a>. <a href=\"?\">Upload igen her</a>";
            }
            else
            {
                echo "Filen må maksimalt være 35 KB!";
            }
        }
        else
        {
            echo $_FILES['fil']['name'] . " eksisterer allerede.";
        }
    }
    else
    {
        echo '<form method="POST" enctype="multipart/form-data">';
        echo '<p>Fil:<br><input type="file" name="fil"><p>';
        echo '<p><input type="submit" value="Upload" name="submit"></p>';
        echo '</form>';
    }
?>
Avatar billede ravsted-dk Nybegynder
27. februar 2005 - 22:58 #21
nu kommer den med denne fejl

Warning: move_uploaded_file(): Unable to move '/tmp/phpiZHayC' to '' in /var/www/upload.php on line 8
Avatar billede coderdk Praktikant
27. februar 2005 - 22:59 #22
Bah:

Kommentar: coderdk
27/02-2005 13:53:51    My bad! Linjen:

  move_uploaded_file( $_FILES['fil']['tmp_name'], $_FILES['userfile']['name'] );

Skulle være:

  move_uploaded_file( $_FILES['fil']['tmp_name'], $_FILES['fil']['name'] );
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