Avatar billede kellesen Nybegynder
14. maj 2007 - 15:06 Der er 3 kommentarer og
1 løsning

upload af billeder - lidt problemer

Jeg bruger dette script - fundet herinde;

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>new one</title>
</head>






Den bliver ved med at sige: aDesværre, filen '1.jpg' kunne ikke uploades!

Har sat mapperne via FTP program til "755"



<body>
<?php

/* Funktion der uploader en fil af tilladt filtype (MIME) med en maximal størrelse til et bibliotek */
/* Funktionen skal fodres med $_FILES['navn'] */
/* String upload_fil(Array fil [, Integer max_stoerrelse [, String bibliotek [, Array filtyper_tilladt]]])  */


function upload_fil($fil, $max_stoerrelse = 100, $bibliotek = 'default', $filtyper_tilladt = 'default')
{
    if ($bibliotek == 'default') {
        $bibliotek = '../pages/heste';
    }

    if ($filtyper_tilladt == 'default') {
        $filtyper_tilladt = array('image/bmp', 'image/jpeg', 'image/pjpeg', 'image/tiff', 'image/png', 'image/gif', 'application/pdf', 'application/zip', 'application/arj', 'application/x-zip-compressed', 'application/octet-stream');
    }

    if ($fil['size'] > 0) {
        $filnavn = strtolower(ereg_replace(' ', '_', $fil['name']));
        $fil_sti = $bibliotek . '/' . $filnavn;
        $fra = $fil['tmp_name'];
        $fil_stoerrelse = filesize($fra)/1024;
        $filtype = $fil['type'];
        $fejl = 0;

        if (!in_array($filtype, $filtyper_tilladt)) {
            echo "<p>Filtypen '$filtype' er ikke tilladt. De tilladte filtyper er '" . implode("', '", $filtyper_tilladt) . "'. Filen '$filnavn' kan derfor ikke uploades!</p>";
            $fejl = 1;
        }

        if ($fil_stoerrelse > $max_stoerrelse) {
            echo "<p>Filen '$filnavn' er for stor og kan ikke uploades. Den fylder " . ceil($fil_stoerrelse) . " kb og der kan maximalt uploades $max_stoerrelse kb!</p>";
            $fejl = 1;
        }

        if ($fejl == 0) {
            if (file_exists($_SERVER['DOCUMENT_ROOT'] . $fil_sti)) {
                $pos = strrpos($filnavn, '.');
                $foerpos = substr($filnavn, 0, $pos);
                $efterpos = substr($filnavn, $pos + 1, strlen($filnavn) - ($pos + 1));
                $i = 2;

                echo "<p>Filen '$filnavn' eksisterer allerede i '$bibliotek' og filen omdøbes derfor til ";

                while (file_exists($_SERVER['DOCUMENT_ROOT'] . $fil_sti)) {
                    $filnavn = $foerpos . '(' . $i . ').' . $efterpos;
                    $fil_sti = $bibliotek . '/' . $filnavn;
                    $i++;
                }

                echo "'$filnavn'</p>";
            }

            $til = $_SERVER['DOCUMENT_ROOT'] . $fil_sti;

            if (move_uploaded_file($fra, $til)) {
                echo "<p>Filen '$filnavn' er uploadet!</p>";
                return $fil_sti;
            } else {
                echo "<p>aDesværre, filen '$filnavn' kunne ikke uploades!</p>";
                return false;
            }
        }
    } else {
        echo '<p>Der er ikke vedhæftet nogen fil!</p>';
    }
}


if (isset($_POST['send']))
{
$userfile = $_FILES['userfile'];
$bibliotek = $_POST['bibliotek'];
upload_fil($userfile, 10000, $bibliotek);
}
else
{
?>

<form enctype="multipart/form-data" action="<?php $_SERVER['../PHP_SELF']; ?>" method="post">
Vælg fil<br />
<input type="file" name="userfile"><br />
Vælg mappe:<br />
<select name="bibliotek">
    <option value ="../images/heste">heste</option>
    <option value ="/images/stamtrae">stamtræ</option>
</select><br />
<input type="submit" name="send" value="Upload Fil">
</form>

<?php
}
?>
</body>
</html>
Avatar billede phliplip Nybegynder
15. maj 2007 - 10:37 #1
Prøv at skifte til 775..
Avatar billede phliplip Nybegynder
15. maj 2007 - 10:43 #2
Ved 755 er det kun ejeren af mappen der har skrive rettigheder. Og eftersom webserveren og din FTP bruger højst tænkeligt ikke har samme user ID (UID) Så kan der ikke skrives i mappen, dvs. scriptet ikke kan flytte filen. Hvis nu de har samme gruppe ID (GID) så kan det fikses ved at sætte til 775, da gruppen nu også har skrive rettigheder. Og er webserveren heller ikke i samme gruppe som din FTP bruger, så skift til 777, så har ALLE skrive rettigheder i mappen!

Dog skal du være temmelig påpasselig med brugen af 777, og især på en shared server. Da andre kunder vil kunne skrive til den mappe, og derfor også slette filer. Hvis altså serveren ikke er sat korrekt op!
Avatar billede kellesen Nybegynder
15. maj 2007 - 11:01 #3
ok,.. du svarer bare - har fået det til at virke :)
Avatar billede phliplip Nybegynder
15. maj 2007 - 11:31 #4
Hvad var løsningen så !?
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
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

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