/ Forside / Teknologi / Udvikling / PHP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
PHP
#NavnPoint
rfh 3959
natmaden 3372
poul_from 3310
funbreak 2700
stone47 2230
Jin2k 1960
Angband 1743
Bjerner 1249
refi 1185
10  Interkril.. 1146
Filens efternavn... ikke mimetype
Fra : Mikkel Jakobsen


Dato : 15-03-08 07:08


Hej Ng..

Jer er ved at lave et upload schript.

Det virker fint nok, men jeg kunne godt tænke mig
at finde filens 'efternavn' Ikke mimetype='text/plain' for tekst
filer.
Men TXT, doc, ellet Zip,rar eller JPG,gif.... osv.

Nu gør jeg som følgende:

$Upload_fil_navn = $_FILES["upfil"]["name"];
$fil_ext_arry = explode(".", $Upload_fil_navn);
$fil_ext          = $fil_ext_arry[1];

Det virker også fint, indtil der er mere end et '.' i
filnavnet...
men når filen hedder 'filnavn.123.test.zip'
Bliver fil $fil_ext = '123' (selvfølgelig)...
Men hvordan får jeg den til at blive ZIP?


Mikkel






--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

 
 
Bertel Lund Hansen (15-03-2008)
Kommentar
Fra : Bertel Lund Hansen


Dato : 15-03-08 08:41

Mikkel Jakobsen skrev:

> $Upload_fil_navn = $_FILES["upfil"]["name"];
> $fil_ext_arry = explode(".", $Upload_fil_navn);
> $fil_ext          = $fil_ext_arry[1];

Et fif:
Med list() kan du skrive den slags kortere:

   list($file_name,$file_ext)= explode(".", $Upload_fil_navn);

men det ændrer ikke ved dit problem.

> Det virker også fint, indtil der er mere end et '.' i filnavnet...

   $pos=strrpos($_FILES["upfil"]["name"],'.')+1;
   $file_ext=substr($_FILES["upfil"]["name"],$pos);


   http://dk.php.net/manual/da/function.strrpos.php

--
Bertel
http://bertel.lundhansen.dk/   FIDUSO: http://fiduso.dk/

Mikkel Jakobsen (15-03-2008)
Kommentar
Fra : Mikkel Jakobsen


Dato : 15-03-08 09:16

Tak for svaret, det virker fint.
Jeg er ikke helt sikker på jeg forstår metoden, men den virker..

>
>    $pos=strrpos($_FILES["upfil"]["name"],'.')+1;
>    $fil_ext=substr($_FILES["upfil"]["name"],$pos);
>

Jeg sad selv og forsøgte mig frem, og fandt en anden løsning...
Det er ikke sikker den er så god som din løsning, men den virker også.

> $Upload_fil_navn = $_FILES["upfil"]["name"];
> $fil_ext_arry = explode(".", $Upload_fil_navn);
> $fil_ext          = $fil_ext_arry[1];



jeg udskiftede:
$fil_ext          = $fil_ext_arry[1];

med:
$fil_ext          = end($fil_ext_arry);


Mikkel.

Ps. tak for fif'et.

--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

Bertel Lund Hansen (17-03-2008)
Kommentar
Fra : Bertel Lund Hansen


Dato : 17-03-08 11:08

Mikkel Jakobsen skrev:

> Jeg er ikke helt sikker på jeg forstår metoden, men den virker..

Her er forklaringen:

> >    $pos=strrpos($_FILES["upfil"]["name"],'.')+1;

strrpos() finder den første forekomst af et tegn *bagfra*. Det
betyder at $pos peger på tegnet lige efter det sidste punktum på
grund af +1.

> >    $fil_ext=substr($_FILES["upfil"]["name"],$pos);

substr() udtager en delstreng af en streng. Når man kun angiver
startpositionen tager den hele resten af strengen med - altså fra
det første tegn efter sidste punktum og ud, og det var netop hvad
du ønskede.

> Jeg sad selv og forsøgte mig frem, og fandt en anden løsning...
> Det er ikke sikker den er så god som din løsning, men den virker også.

Den er lige så god - enkel og logisk. Hvis man er pedant, giver
man sig til at måle hastigheder, men det er jeg så godt som holdt
op med på grund af nutidige computeres arbejdshastigheder. Det er
nok kun hvis man sidder med tidskritiske systemer at man vil gøre
det i dag.

--
Bertel
http://bertel.lundhansen.dk/   FIDUSO: http://fiduso.dk/

Lakridserne (16-03-2008)
Kommentar
Fra : Lakridserne


Dato : 16-03-08 05:03

On 15 Mar., 09:15, Mikkel Jakobsen <s...@bonzai.adsl.dk> wrote:
> Tak for svaret, det virker fint.
> Jeg er ikke helt sikker på jeg forstår metoden, men den virker..
>
>
>
> > $pos=strrpos($_FILES["upfil"]["name"],'.')+1;
> > $fil_ext=substr($_FILES["upfil"]["name"],$pos);
>
> Jeg sad selv og forsøgte mig frem, og fandt en anden løsning...
> Det er ikke sikker den er så god som din løsning, men den virker også.
>
> > $Upload_fil_navn = $_FILES["upfil"]["name"];
> > $fil_ext_arry = explode(".", $Upload_fil_navn);
> > $fil_ext = $fil_ext_arry[1];
>
> jeg udskiftede:
> $fil_ext = $fil_ext_arry[1];
>
> med:
> $fil_ext = end($fil_ext_arry);
>
> Mikkel.
>
> Ps. tak for fif'et.
>
> --
> Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
> - Pædagogiske tutorials på dansk
> - Kom godt i gang med koderne
> KLIK HER! =>http://www.html.dk/tutorials

Hej,

Det kan godt være at mit svar er for dårligt (jeg har ikke selv
prøvet), men efter at være blivet inspireret af at man kan få den til
at lade være med at fortolke et anførselstegn som php ved at sætte en
\ foran anførselstegnet.
Kunne det tænkes at man kunne gøre et eller andet med at sætte \ foran
'.'???

Lakridserne

Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408924
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste