Avatar billede webcreator Nybegynder
03. august 2003 - 00:36 Der er 18 kommentarer og
2 løsninger

Upload - store og små bogstaver - evt. problemer

Hej.

Jeg har et upload-script skrevet i PHP. Mit problem består i, at jeg ikke kan finde ud af, om jeg skal tillade STORE bogstaver i filnavnet. På en linux-server vil det næppe give problemer. Men da jeg fx. tog backup af mit hotel, var der flg. to filer, der forsøgte at overskrive hinanden :

- Rapport.doc
- rapport.doc

Hvad vil I råde mig til ? Mon ikke, det vil være et stort irritationsmoment, ikke at kunne bruge både STORE og små bogstaver?
Avatar billede lardy Nybegynder
03. august 2003 - 00:40 #1
Hmm forstår ikke helt problemet. Du skal selvfølgelig ikke tillade filnavnene at være case sensitive. dvs Rapport skal være = raPPoRt osv - ellers går der kuk i det.
Avatar billede webcreator Nybegynder
03. august 2003 - 00:42 #2
Ok. Så må jeg lave flg. om :
if (eregi("^[-_a-zA-Z0-9.]+$", $fil_name)) {

til :
if (eregi("^[-_a-z0-9.]+$", $fil_name)) {

Derved kan man ikke bruge store og små bogstaver.

Men skulle jeg vælge den smarte løsning, så blev det noget med, at filen blev renamet til lower-case - kan man det ?
Avatar billede lardy Nybegynder
03. august 2003 - 00:44 #3
det kan du. Jeg fatter desværre bare ikke hvordan du gør det i php :( - det kan være noget med $lcase($fil_name) måske hehe
Avatar billede whatever Nybegynder
03. august 2003 - 00:44 #4
når du gemmer filen kan du bare køre filnavnet igennem strtolower()
Avatar billede webcreator Nybegynder
03. august 2003 - 00:45 #5
Hehe, ok. Men du skal i hvertfald have tak alligevel. Måske der kommer en PHP'er forbi. Men godt du sagde, at det kunne give bøvl.
Avatar billede lardy Nybegynder
03. august 2003 - 00:46 #6
hehe brug whatever's svar :)
Avatar billede webcreator Nybegynder
03. august 2003 - 00:51 #7
"køre igennem" ?
Sådan :

$nytfilnavn = strtolower($fil);
Avatar billede webcreator Nybegynder
03. august 2003 - 00:56 #8
Eller jeg kan måske ligefrem gøre sådan :

move_uploaded_file($fil, "$absolute_path/$fil_name") or $fejl = "error";
Lavet om til :
move_uploaded_file(strtolower($fil), "$absolute_path/$fil_name") or $fejl = "error";

?
Avatar billede whatever Nybegynder
03. august 2003 - 00:58 #9
move_uploaded_file($fil, "$absolute_path/".strtolower($fil_name)) or $fejl = "error";
Avatar billede webcreator Nybegynder
03. august 2003 - 00:59 #10
Nå ja, self. Var også noget i den retning jeg mente ;)
Tak.
Avatar billede webcreator Nybegynder
03. august 2003 - 01:00 #11
Hvorfor et punktum (.) foran funktionen ?
Avatar billede webcreator Nybegynder
03. august 2003 - 01:01 #12
Ah, du er jo nød til at "pause" det foregående. Men gøres det ikke sådan :

" . funktion . " ?
Avatar billede whatever Nybegynder
03. august 2003 - 01:05 #13
Når der ikke kommer noget tekst efter $strtolower($filename), er det ikke nødvendigt at skifte ." igen.
Avatar billede webcreator Nybegynder
03. august 2003 - 01:10 #14
IC.

Men jeg lavede det nu som en variabel, så det ser sådan ud :

$fil_name = strtolower($fil_name);
move_uploaded_file($fil, "$absolute_path/$fil_name") or $fejl = "error";

Det gør jeg, da jeg senere får brug for den nye fil_name, som skal indsættes i min DB.

Derudover ville jeg lige høre, om det kan være et problem, at min fil hedder fx. :

dette.er.en.test.doc ?
Jeg har netop fundet ud af, at mit script tillader dette :O/
Avatar billede webcreator Nybegynder
03. august 2003 - 01:10 #15
Sådan tillades tegn i filnavnet :
if (eregi("^[-_a-zA-Z0-9.]+$", $fil_name)) {
Avatar billede whatever Nybegynder
03. august 2003 - 01:14 #16
Så vidt jeg ved, er det ikke noget med problem med mange punktummer.
Avatar billede webcreator Nybegynder
03. august 2003 - 11:25 #17
Jeg siger mange tak for svar :-)
Avatar billede webcreator Nybegynder
03. august 2003 - 11:25 #18
(jeg håber dog, at der er et par personer mere, der kan bekræfte, at det er ok med flere punktummer :)
Avatar billede avacore Nybegynder
03. august 2003 - 17:20 #19
På et *nix system burde der ikke være nogle med de mange punktummer, mht. Windows kræver det at partitionen (drevet) som filerne skal være enten a. formateret med NTFS eller b. formateret som FAT* og have en VFAT tabel til udvidet filnavne.

Jeg ser dog et problem med koden "if (eregi("^[-_a-zA-Z0-9.]+$", $fil_name)) {" da "." er et wildcard i regular expressions der matcher alle tegn, linien bør rettes til "if (eregi("^[-_a-zA-Z0-9\\.]+$", $fil_name)) {".
Avatar billede webcreator Nybegynder
03. august 2003 - 20:12 #20
Matcher det alle tegn ? Jeg kan da ikke bruge fx. ÆØÅ,!"#¤%&/(
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