Avatar billede Morten Professor
30. januar 2017 - 13:46 Der er 1 kommentar og
1 løsning

Mysqli og Billede upload + database

Hej Eksperter

Nu må jeg kaste håndklædet i ringen.
Jeg har forsøgt at få min kode til at afvise et billede hvis den har en med samme navn.
Men den vil simpelhen ikke.

Her er koden:
<?php
$tempfile = $_FILES['filnavn']['tmp_name'];
//$destination = "billederodder/{$_FILES['filnavn']['name']} ";
$destination = "../uploads/{$_FILES['filnavn']['name']}";

function Upload_billede($con, $tempfile){
    /* Upload billede */
if ($stmt = $con->prepare('INSERT INTO `tbl_brugerbilleder` (`id`, `medlem`, `adgangskode`, `billedenavn`, `datetime`) VALUES (?, ?, ?, ?, ?)')) {

    /* Bind parametre */
    $stmt->bind_param('issss', $id, $medlem, $adgangskode, $billedenavn, $datetime);

    /* Sæt værdier på parametrene */
    $id = $_POST['id'];
    $medlem = $_SESSION['brugernavn'];
    $adgangskode = $_SESSION['adgangskode'];
    $billedenavn = $_FILES['filnavn']['name'];
    $datetime = date('Y-m-d H:i:s');

    /* Eksekver forespørgslen */
    $stmt->execute();

    /* Luk statement */
    $stmt->close();

} else {
    /* Der er opstået en fejl */
    echo 'Der opstod en fejl i erklæringen: ' . $con->error;
}
}
// Access the $_FILES global variable for this specific file being uploaded
// and create local PHP variables from the $_FILES array of information
$fileName = $_FILES["filnavn"]["name"]; // The file name
$fileTmpLoc = $_FILES["filnavn"]["tmp_name"]; // File in the PHP tmp folder
$fileType = $_FILES["filnavn"]["type"]; // The type of file it is
$fileSize = $_FILES["filnavn"]["size"]; // File size in bytes
$fileErrorMsg = $_FILES["filnavn"]["error"]; // 0 for false... and 1 for true
$kaboom = explode(".", $fileName); // Split file name into an array using the dot
$fileExt = end($kaboom); // Now target the last array element to get the file extension<?php
    /* billede */
    if ($stmt = $con->prepare('SELECT `id`, `billedenavn` FROM `tbl_brugerbilleder` WHERE billedenavn = ?' )) {
        /* Bind parametre */
        $stmt->bind_param('s', $B_billedenavn);
        /* Sæt værdier på parametrene */
        $B_billedenavn = $_FILES["filnavn"]["name"];

        /* Eksekver forespørgslen */
        $stmt->execute();

        /* Bind resultatet */
        $stmt->bind_result($B_id, $B_billedenavn);
        }
        while ($stmt->fetch()) {
            ;}   

// START PHP Image Upload Error Handling --------------------------------------------------
if (!$fileTmpLoc) { // if file not chosen
    echo "Tryk på Vælg fil for at uploade billede";
   
} else if($fileSize > 1242880) { // if file size is larger than 1 Megabytes
    echo "Fejl må ikke være mere end 1 Megabytes";
    unlink($fileTmpLoc); // Remove the uploaded file from the PHP temp folder
   
}
else if (!preg_match("/.(gif|jpg|png)$/i", $fileName) ) {
    // This condition is only if you wish to allow uploading of specific file types   
    echo "Fejl må kun være .gif, .jpg, eller .png.";
    unlink($fileTmpLoc); // Remove the uploaded file from the PHP temp folder
   
}
else if ($B_billedenavn == 0) { // Hvis billedenavn er der afvis billede
    echo "Der er en fil der hedder det samme, vær venlig at omdøbe billedet";
   
}
else if ($fileErrorMsg == 1) { // if file upload error key is equal to 1
    echo "Prøv igen";
    exit();
} else
{
    Upload_billede($con, $tempfile);
    copy($tempfile, $destination);
   
    echo "Billede er uploadet";}
?>
Alt andet virker den kommer fint ind på serveren i databasen.
På nær nu som det står, så bliver den ved med at skrive:
Der er en fil der hedder det samme, vær venlig at omdøbe billedet
Det er også fint men den skal kun sige det når der er et billede på databasen der hedder det samme.

Håber i forstår hvad jeg mener eller så sig endelig til.

Med venlig hilsen
Morten
Avatar billede olsensweb.dk Ekspert
30. januar 2017 - 14:02 #1
>Jeg har forsøgt at få min kode til at afvise et billede hvis den har en med samme navn.
uden at have kigge din code igennem, så kig på denne function
http://php.net/manual/en/function.file-exists.php
Avatar billede Morten Professor
30. januar 2017 - 14:06 #2
Hej Olsen

Jeg brugte den her else if ($B_billedenavn != 0)
Kan det passe at det virker for lige nu virker det fint
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

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