Avatar billede webcreator Nybegynder
30. juli 2003 - 19:21 Der er 11 kommentarer og
2 løsninger

Upload-script - hvor kommer $file_size og $file_name fra ?

Hej.

Jeg har nedenstående upload-funktion. Men jeg undre mig over, hvorfra indholdet til $file_size og $file_name kommer. Jeg har intet requestet til disse. Fandt blot funktionerne fra et andet upload-script, og byggede mit eget.

Feltet hvori adressen til filen indtastes, hedder file. Hvis jeg requester dette, og udskriver det, får jeg adressen til tmp-filen på serveren. $file_name indeholder blot filnavnet - fx. test.jpg


if (file_exists("$absolute_path/$file_name")) {
    $fejl = true;
    $uds = "Filnavn optaget. Omdøb venligst din fil";
} else {

    if (($size_limit == "yes") && ($limit_size <= $file_size)) {
        $fejl = true;
        $uds = "Filen er for stor";
    } else {
                       
        $ext = strrchr($file_name,'.');

    if (($limit_ext == "yes") && (!in_array($ext,$extensions))) {
        $fejl = true;
            $uds = "Filtype ikke godkendt";
        } else {
                               
            @copy($file, "$absolute_path/$file_name") or $fejl = "error";
                           
            $insertSQL = "insert into posts (user, kate, file)
                                    values ('$user', '$kate', '$file_name')";
            mysql_query($insertSQL) or die (mysql_error());
                               
            mysql_close($conn);
                               
        header("location:uds.php?uds=Opgaven blev uploadet</a>");
        exit;
                           
    }
    }
}
Avatar billede ahv Nybegynder
30. juli 2003 - 19:31 #1
Kan det skyldes register_globals er on, og de dermed hentes på en anden måde, end den du plejer at se?
Avatar billede webcreator Nybegynder
30. juli 2003 - 19:32 #2
Jeg har selv tænkt den tanke. Men når jeg nu ikke sender noget, med navnet file_name (feltet hedder jo file), så er det lidt mystisk.
Avatar billede webcreator Nybegynder
30. juli 2003 - 19:53 #3
Hvad skal jeg requeste, for kun at få filnavnet ?
Har prøvet at udskrive $file. Så får jeg :
/tmp/phpEWBUx4

Men hvis jeg først requester "file" (altså feltets navn), og smider det i $file, så er den tom. Forstår det simpelthen ikke.
Avatar billede webcreator Nybegynder
30. juli 2003 - 19:53 #4
file er selvfølgelig af typen file.
Avatar billede fangel Nybegynder
30. juli 2003 - 20:23 #5
det er "auto" variabler lavet p.g.a. register_globals=on

der er følgende:

felt = _FILES['felt']['tmp_name'] == navnet på den midlatidige fil som den uploadede fil bliver gemt i

felt_name = _FILES['felt']['name'] == navnet på den orig. fil

felt_size = _FILES['felt']['size'] == filen str. i bytes

felt_type = _FILES['felt']['type'] == MIME type på filen (optional - ikke altid den er der, og kan variere)

Morten
Avatar billede fangel Nybegynder
30. juli 2003 - 20:25 #6
snip fra: http://dk.php.net/features.file-upload

---
When register_globals  is turned on in php.ini, additional variables are available. For example, $userfile_name will equal $_FILES['userfile']['name'], $userfile_type will equal $_FILES['userfile']['type'], etc. Keep in mind that as of PHP 4.2.0, register_globals defaults to off. It's preferred to not rely on this directive.
---

Morten
Avatar billede webcreator Nybegynder
30. juli 2003 - 20:32 #7
Jeg forstår vist ikke helt brugen af disse. Jeg prøvede med :

felt_name = _FILES['felt']['name']

Lavede den om til :

$felt_name = _FILES['file']['name'];

Er det forkert ? Jeg skrev feltets navn (file) oglavede en variabel, som jeg kan udskrive.
Avatar billede fangel Nybegynder
30. juli 2003 - 20:35 #8
i dit ex:

$file_name == $_FILES['file']['name']

Morten
Avatar billede webcreator Nybegynder
30. juli 2003 - 20:41 #9
Ok, tak.
Men kan da se, at :
$file_name = $_FILES['file']['name'];
Vil virke bedre :-)

Tak igen.
Avatar billede fangel Nybegynder
30. juli 2003 - 20:43 #10
jaja... og $file_name findes jo, så et andet vil virke bedre...

prøv

print_r($_FILES['file']);

for at se hvad det indeholder ;)

Morten
Avatar billede webcreator Nybegynder
30. juli 2003 - 20:54 #11
Ah, smart. Den har lige det hele :)
Avatar billede fangel Nybegynder
30. juli 2003 - 20:56 #12
print_r er praktisk ;)

man kan også lave en lidt mere simpel:

foreach($_FILES['file'] AS $key=>$value){
  echo $key . " indholder: " . $value . "<br>\n";
}

Morten
Avatar billede webcreator Nybegynder
30. juli 2003 - 21:01 #13
Cool :)
Tak
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