Avatar billede webcreator Nybegynder
22. juni 2003 - 14:36 Der er 25 kommentarer og
1 løsning

Tjek fil-type før fortsættelse (upload)

Hej.

Jeg vil gerne tjekke, om en fil er af typen gif, jpeg, jpg, inden jeg fortsætter - med en IF-sætning. Hvordan gør jeg det ? Jeg har filnavnet (incl. extension) i en variabel.
Avatar billede Slettet bruger
22. juni 2003 - 14:41 #1
Ved upload indeholder $_FILES['userfile']['type'] filen mimetype.

Og så kan du checke ala:

if (stristr($_FILES['userfile']['type'], "gif")) {
  // gif
}
Avatar billede webcreator Nybegynder
22. juni 2003 - 14:57 #2
Hvordan smider jeg flere fil-typer på ?
"gif, jpg" osv ?
Avatar billede webcreator Nybegynder
22. juni 2003 - 15:02 #3
Det virker ikke.
if (stristr($_FILES['userfile']['type'], "gif")) {
echo "GIF-Billede";
} else {
echo "Ikke gif-Billede";
}
Den udskriver indholdet i else-sætningen lige meget hvad.
Avatar billede jakoba Nybegynder
22. juni 2003 - 15:03 #4
men på det tidspunkt er filen da allerede uploadet. alle 1.345.863 bytes af et grimt .bmp billede :(

Teoretisk burde du kunne bestemme det før da med accept attributten i en type='file' felt.
    <INPUT TYPE=file NAME=image ACCEPT="image/gif">
men jeg har aldrig fået det til at virke nogen steder.
Avatar billede webcreator Nybegynder
22. juni 2003 - 15:04 #5
JakobA > Så er det jo ikke meget bevendt :)
Avatar billede Slettet bruger
22. juni 2003 - 15:08 #6
Avatar billede Slettet bruger
22. juni 2003 - 15:09 #7
Nej den der ACCEPT ting er vist ikke meget værd. For det første er den ikke understøttet af de populære browsere (IE, netscape etc.), og for det andet kan den jo let omgås, så man alligevel kan uploade et stort .bmp billede.
Avatar billede ahv Nybegynder
22. juni 2003 - 15:16 #8
Hvad med ->

$files = $_FILES['userfile']['name']
if(eregi(".jpg$", $files) || eregi(".gif$", $files) || eregi(".jpeg$", $files)) {
Avatar billede jammerlab Nybegynder
22. juni 2003 - 15:18 #9
Hmm jeg gør bare på følgende måde... altså den sender filen videre fra en form til denne:

if (substr($file, -3) == 'txt' || substr($file, -3) == 'doc' || substr($file, -3) == 'zip' || substr($file, -3) == 'jpg') {

Hvis den er en af de følgende filer så går den vidre i if'en :)
Avatar billede jammerlab Nybegynder
22. juni 2003 - 15:19 #10
Altså i en form med denne <input type='file' name='file_field' class=form> den fil man vælger blir så til variablen $file og det er så den den tjecker :)
Avatar billede webcreator Nybegynder
22. juni 2003 - 15:21 #11
Talker > Ehm, lad mig se om jeg kan udtrykke det KLART nok :
Genialt ! :-)

Mange tak for hjælpen alle sammen.
Avatar billede jammerlab Nybegynder
22. juni 2003 - 15:23 #12
hehe selv tak :)
Avatar billede ahv Nybegynder
22. juni 2003 - 15:24 #13
webcreator -> synes nu min er mere lige til ;o) men skidt pyt, i talkers skal du bare rette på antallet den skal hoppe tilbage, hans lige nu er tilpasset til at du skal skrives hvor lang endelsen er min skal du bare taste indelsen ind.
Avatar billede schaefner Juniormester
22. juni 2003 - 15:25 #14
ahv >> Ja, men talker's er sikkert en del hurtigere.
Avatar billede webcreator Nybegynder
22. juni 2003 - 15:25 #15
Ahv > Jap , men din drillede også lidt. Muligvis noget jeg lavede galt. Talkers var ret lige til :-)
Avatar billede ahv Nybegynder
22. juni 2003 - 15:26 #16
Min er hvertfald den korteste ;o) ->

if(eregi(".jpg$|.gif$|.jpeg$", $file)) {
Avatar billede webcreator Nybegynder
22. juni 2003 - 15:49 #17
et lille tillægsspørgsmål :
Hvorfor duer det ikke med !=  ?

if (substr($file_name, -3) != 'gif' || substr($file_name, -3) != 'jpg' || substr($file_name, -4) != 'jpeg' || substr($file_name, -3) != 'png') {
header("location:ups.php");
} else {
UPLOAD AF FIL
}
Avatar billede webcreator Nybegynder
22. juni 2003 - 15:50 #18
Håber i vil svare.

Men det virker da logisk. Hvis typen ikke er korrekt, sendes brugeren til en ups-side. Hvis den er accepteret, uploades filen.
Avatar billede jammerlab Nybegynder
22. juni 2003 - 15:51 #19
Prøv med !== ?
Avatar billede webcreator Nybegynder
22. juni 2003 - 15:52 #20
Virker ikke.
Avatar billede ahv Nybegynder
22. juni 2003 - 15:54 #21
Vil vende tilbage til min, prøv med ->

if(!eregi(".jpg$|.gif$|.jpeg$", $file)) {
header("location:ups.php");
} else {
UPLOAD AF FIL
}
Avatar billede webcreator Nybegynder
22. juni 2003 - 15:55 #22
ahv > ok.
Avatar billede webcreator Nybegynder
22. juni 2003 - 15:57 #23
Dit virkede faktisk bedre :)
Jeg opretter lige et spm. med points til dig om lidt. Skal lige ned med skrald..
Avatar billede webcreator Nybegynder
22. juni 2003 - 15:59 #24
Forresten - kunne man lave det omvendt ? (bare for nysgerrigheden skyld)
Således, at man blev sendt videre til ups.php, hvis filen var af typen "jpg" ?
Avatar billede ahv Nybegynder
22. juni 2003 - 16:00 #25
if(eregi(".jpg$|.gif$|.jpeg$", $file)) {
header("location:ups.php");
} else {
UPLOAD AF FIL
}
Avatar billede webcreator Nybegynder
22. juni 2003 - 16:01 #26
Ah, så var det altså !'eren der var til det :-)
Tak :)

points : http://www.eksperten.dk/spm/367847
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