Avatar billede webstuff Nybegynder
08. december 2005 - 16:50 Der er 21 kommentarer og
1 løsning

irriterende upload script

Hejsa

Jeg fandt det her upload script i et andet spørgsmål her på exp.
det virker også fint..
Men er der nogen der kan få det til at acceptere mp3, wav og wma filer også??

###############################################################

<html>
<head>
<link href="../css/main.css" rel="stylesheet" type="text/css">
</head>
<body>
<h3>Upload fil</h3>
<?php
if($_SESSION[login] == true){

/* 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 = 1000000, $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>';
    }
}


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 ="/tracks">Tracks</option>
    <option value ="/billeder">Billeder</option>
    <option value ="/beats">Beats</option>
</select><br />
<input type="submit" name="send" value="Upload Fil">
</form>

<?php
}
} else {
echo "Du har ikke rettigheder til denne side";
}
?>
</body>
</html>
Avatar billede casualty Nybegynder
08. december 2005 - 16:51 #1
Du skal tilføje typerne her:

$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');
Avatar billede casualty Nybegynder
08. december 2005 - 16:54 #2
$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','audio/mp3','audio/wav','audio/x-ms-wma');
Avatar billede casualty Nybegynder
08. december 2005 - 16:55 #3
Avatar billede casualty Nybegynder
08. december 2005 - 16:55 #4
mp3 = audio/x-mpeg
Avatar billede webstuff Nybegynder
08. december 2005 - 17:02 #5
godt.. tjekker lige om det virker, og så vender jeg tilbage:)
Avatar billede webstuff Nybegynder
08. december 2005 - 17:08 #6
den siger at der ikke er vedhætet nogen fil??
Avatar billede casualty Nybegynder
08. december 2005 - 17:26 #7
Hvor stor er filen du prøver at uploade?

Der er pr. default en maxsize i php på 2MB

Test med en lille fil på ca. 500kb
Avatar billede casualty Nybegynder
08. december 2005 - 17:34 #8
Denne er testet hos mig og virker:

<html>
<head>
<link href="../css/main.css" rel="stylesheet" type="text/css">
</head>
<body>
<h3>Upload fil</h3>
<?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 = 1000000, $bibliotek = 'default', $filtyper_tilladt = 'default')
{
    if ($bibliotek == 'default') {
        $bibliotek = '/upload';
    }

    if ($filtyper_tilladt == 'default') {
        $filtyper_tilladt = array('image/bmp', 'image/jpeg', 'audio/mpeg' ,'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>';
    }
}


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 ="/tracks">Tracks</option>
    <option value ="/billeder">Billeder</option>
    <option value ="/beats">Beats</option>
</select><br />
<input type="submit" name="send" value="Upload Fil">
</form>

<?php
}


?>
</body>
</html>
Avatar billede webstuff Nybegynder
08. december 2005 - 17:34 #9
den er på 7mb

men jeg har ændret de 2 steder hvor man kan ændre fil størrelsen??
Avatar billede casualty Nybegynder
08. december 2005 - 17:43 #10
Hvor er de to steder?

Prøv at skrive "phpinfo();" øverst i din kode. Så kan du se hvor meget serveren tillader at man uploader
Avatar billede webstuff Nybegynder
08. december 2005 - 17:47 #11
hvad står det under?
Avatar billede casualty Nybegynder
08. december 2005 - 17:48 #12
Kig efter variablerne "post_max_size" og "upload_max_filesize".

Det er dem der overordnet bestemmer hvor meget der kan uploades. Uanset hav der står i din phpkode...
Avatar billede casualty Nybegynder
08. december 2005 - 17:51 #13
hav = hvad

Har du selv kontrol over serveren, eller har du et wobhotel hos b-one eller én af de andre?

Hvis du selv har kontrol over serveren, kan du sætte variablernes værdier selv, i php´s ini. Ellers kan du prøve at lave en htaccess fil...
Avatar billede casualty Nybegynder
08. december 2005 - 17:52 #14
wobhotel = webhotel... Det går sgu godt her :)
Avatar billede webstuff Nybegynder
08. december 2005 - 17:54 #15
post_max_size = 8M
upload_max_size = 2M

Det er der fejlen ligger;)

smider du et svar.. for der er vel ikke rigtigt noget at gøre ved det når jeg har hostet mit domæne hos www.needhost.dk ?
Avatar billede casualty Nybegynder
08. december 2005 - 17:57 #16
Du kan lave en htacces fil der ændrer den enkelte phpvariabel.
Filen uploader du så til samme mappe som din phpfil ligger i.

Det er ikke sikker det virker, det kommer an på hvor meget www.needhost.dk tillader
Avatar billede casualty Nybegynder
08. december 2005 - 18:03 #17
Lav en txt-fil og skriv i den:

php_value post_max_size 128M
php_value upload_max_size 128M

gem den i samme bibliotek som din phpfil

OBS: Filen skal hedde ".htacces" (punktum)htaccess, når den ligger på serveren
Avatar billede casualty Nybegynder
08. december 2005 - 18:03 #18
Et svar
Avatar billede webstuff Nybegynder
08. december 2005 - 18:07 #19
godt det prøver jeg lige..
nu har jeg ellers lige skrevet en mail til hosteren og spurg og dispensation.. hehe
Avatar billede webstuff Nybegynder
08. december 2005 - 18:12 #20
dit trick med .htacces virker ikke :(
skal den ligge samme sted som php filerne eller i mapperne hvor filerne skal være`?
Avatar billede casualty Nybegynder
08. december 2005 - 18:15 #21
Tak for points :) Håber du får det løst...

/Casualty
Avatar billede casualty Nybegynder
08. december 2005 - 18:15 #22
Sammen med phpfilen
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