Avatar billede flash-man Nybegynder
21. oktober 2003 - 19:01 Der er 9 kommentarer og
1 løsning

Automatisk omdøbning af et billede der bliver uploadet?

Hejsa Eksperter!!

Jeg fandt dette script til uploadning af billeder (med få egne rettelser)

if ($upload == "ja") {
$extAll=array(".jpg",".gif",".png");
$ext=strtolower(substr($billede_name,strrpos($billede_name,".")));

$conn = mysql_connect("$db_host", "$db_brug", "$db_pass");
mysql_select_db("$db_navn", $conn);
$result = mysql_query("SELECT * FROM bpix WHERE BINARY fil = '$billede_name'");
$antal = mysql_num_rows($result);
if ($antal == 1) {
$uploade_billede = "Fejl = Der er allerede blevet uploadet et billede med det filnavn!";
} else {
if (!in_array($ext,$extAll)){
$upload_billede = "Ugyldig fil!";
} else {
copy ($billede,"pix/$billede_name");unlink($billede);

Men tænkte at det ville være så meget nemmere, i stedet for at den skulle tjekke om billedet fandtes, at scriptet bare automatisk gav billedet et navn, fx. pic1, pic2, pic3 osv... alt efter hvilken række (id) i databasen billedet blev tilføjet til??

I må gerne komme med forslag til egne scripts, hvis det evt. skulle være nemmere...
Avatar billede googolplex Novice
21. oktober 2003 - 19:06 #1
Her er mit eget, virker fint, tjekker størrelse, omdøber osv. En omskrigning af webcafeens.

/* 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 = '/upload';
    }

    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>Desværre, filen '$filnavn' kunne ikke uploades!</p>";
                return false;
            }
        }
    } else {
        echo '<p>Der er ikke vedhæftet nogen fil!</p>';
    }
}
Avatar billede googolplex Novice
21. oktober 2003 - 19:08 #2
Nå, havde ikke lige set du ville oploade til en DB, sorry :(
Avatar billede flash-man Nybegynder
21. oktober 2003 - 19:13 #3
Sidder og kigger igennem dit script og kan slet ikke finde den del med omdøbning af filen? eller jo... men kan ikke lige skille den ud fra det andet.

Kunne jeg få dig til at skille den del ud, hvor billedet bliver omdøbt, så kan jeg sikkert godt selv finde ud af at lægge det ind i min db..
Avatar billede googolplex Novice
21. oktober 2003 - 19:39 #4
Ok, her er delen der omdøber:

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++;
                }


Mere specifik er det nok denne del du skal bruge:

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


Men som sagt, det er til opload til en mappe (hvilket klart kan anbefales, hvis du skal oploade mange/store filer).
Avatar billede googolplex Novice
21. oktober 2003 - 19:41 #5
Det den gør (og den metode du bør bruge) at checke om filen findes. Hvis den gør det, så omdøber den filen til fil_01.ext (fx) og derefter checker den igen. Hvis filen stadig findes, omdøber den til fil_02.ext osv osv.
Avatar billede flash-man Nybegynder
21. oktober 2003 - 19:43 #6
jeg uploader da osse billederne til en mappe, men lægger bare oplysnigerne om billederne i databasen, så jeg kan hente dem ud sammen med billedet..
Avatar billede googolplex Novice
21. oktober 2003 - 20:08 #7
Ok, så kan du bare bruge min metode :)

Kan du hitte ud af det ? Ellers må du lige skrive !
Avatar billede flash-man Nybegynder
21. oktober 2003 - 20:26 #8
ehm ja... er ikke lige sikker på hvad jeg skal skrive der, hvor der står "??" og om der ellers er mer der skal bruge (indtilvidere) for at aktivere scriptet.

<form action="<? echo $PHP_SELF ?>">" method="??">
<input type="file" name="??">
<input type="submit" value="??">
</form>
Avatar billede googolplex Novice
21. oktober 2003 - 22:00 #9
<form action="<? echo $PHP_SELF ?>">" method="post">
<input type="file" name="etnavnduvaelger">
<input type="submit" value="Upload Fil">
</form>
Avatar billede flash-man Nybegynder
22. oktober 2003 - 16:00 #10
Min form ser nu så'n her ud

<form action="<? echo $PHP_SELF ?>" method="post">
<input type="file" name="pic">
<input type="submit" value="Upload Fil">
</form>

<? og her nede ligger scriptet... ?>

Men der sker intet, har prøvet at kalde funktionen upload_fil() men er ikke så meget inde i PHP
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