Avatar billede telac2 Nybegynder
21. januar 2003 - 21:27 Der er 6 kommentarer og
1 løsning

Upload af filer i php med mellemrum og ÆØÅ

Jeg har nogle kunder som uploader nogle filer til en hjemmeside, og kunder kan jo som sagt finde på de særeste ting ind imellem, så jeg har prøvet at udsætte mit upload script for lidt af hvert.

Problemet er at det ikke virker med ÆØÅ og mellemrum i filnavne, som windows jo (suk) er så glad for. Alle andre normale filer virker fint.

Her er scriptet:

uploadform.php
===========
(form data og alt det der)
<input name=file[1] type=file><br>
<input name=file[2] type=file><br>
....
(submit og alt det der)

insertdata.php
==============
if ($file_name[1]) {
$filename = str_replace(" ","_",$file_name[1]);
$filename = strtolower($filename);
echo "Type: $file[1] kaldes $file_name[1] moves til $filename";
rename ($file[1], "/upload/$filename");
}

if ($file_name[2]) {
$filename = str_replace(" ","_",$file_name[2]);
$filename = strtolower($filename);
echo "Type: $file[2] kaldes $file_name[2] moves til $filename";
rename ($file[2], "/upload/$filename");
}

De to "echo" sætninger er til debug og returnerer følgende:

Type: none kaldes New Text Document.txt moves til new_text_document.txt
Warning: Rename failed (No such file or directory) in /www-data/sp/insertdata.php on line 24
Type: none kaldes æblegrød.txt moves til æblegrød.txt
Warning: Rename failed (No such file or directory) in /www-data/sp/insertdata.php on line 31

Nogen der kan give et tip til hvordan jeg undgår mellemrum og ÆØÅ? Så det virker HVER gang.
Avatar billede telac2 Nybegynder
21. januar 2003 - 21:29 #1
Det skal lige nævnes at uploader man en normal fil får man debug sætningen:
Type: /tmp/phptswmuT kaldes logo.gif moves til logo.gif
og ingen fejl.

PLS HELP! :)
Avatar billede tipsen Nybegynder
22. januar 2003 - 00:06 #2
For det første kan du vist ikke være 100% sikker på navngivningen med file[1], file[2] osv, da det så vidt jeg husker ikke er standard-html! (Dvs. det kan kikse i nogle browsere!) (Ved godt de også bruger det hos php.net!)

derudover bør du vist bruge funktionerne is_uploaded_file() og move_uploaded_file() i stedet for rename(). Se et eksempel på: http://dk.php.net/manual/en/features.file-upload.php#features.file-upload.post-method
Avatar billede tipsen Nybegynder
22. januar 2003 - 00:14 #3
Derudover kan du gøre følgende:

$filename = strtolower($file_name[2]);
$filename = str_replace(array('æ', 'ø', 'å', ' '), array('ae', 'oe', 'aa', '_'), $filename);

for at erstatte æ,ø og å
Avatar billede olebole Juniormester
22. januar 2003 - 01:31 #4
<ole>

Det her virker for mig ... man kan uploade billedet fra julefrokosten: 'Ål æg og øl.jpg':

<?
$replArr = array(
    chr(230) => "ae",
    chr(248) => "oe",
    chr(229) => "aa",
    chr(198) => "ae",
    chr(216) => "oe",
    chr(197) => "aa",
    chr(32) => "_"
);
if ( isset($upl) ) {
    $new_name = strtolower( $f_name );
    $new_name = strtr( $new_name, $replArr );
    copy ( $f, "/upload/".$new_name );
}
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>
<head>
    <title></title>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body>
<form enctype="multipart/form-data" action="<?=$_SERVER["PHP_SELF"]?>" method="post">
    <input name="f" type="file">
    <button type="submit" name="upl">Upload</button>
</form>

</body>
</html>

Du bør naturligvis lave en mere effektiv test på, om der er en uploaded fil - at den virkelig _er_ uploaded - at den er af en valid type - osv  ;o)

/mvh
</bole>
Avatar billede telac2 Nybegynder
22. januar 2003 - 07:52 #5
Hov ... jeg fik ingen mulighed for at tildele point til jer begge, den accepterede bare svaret. Jeg vil godt give 200 point til tipsen også, hvordan gør jeg det?
Avatar billede tipsen Nybegynder
22. januar 2003 - 11:37 #6
Det var fordi jeg ikke havde svaret, da jeg ikke vidste om du kunne bruge det til noget, men det er ligemeget - det er jo kun et tal på en server - fuldstændig betydningsløst...
Avatar billede olebole Juniormester
22. januar 2003 - 13:50 #7
tipsen >> Du skrev noget _overordentlig_ vigtigt ... nemlig at bruge et effektivt check på, hvorvidt filen vitterlig _er_ uploaded, m.m.
Mit eksempel er kun at regne for sådan ... det er absolut ikke tikstrækkeligt for en sikker håndtereing af en upload-funktion. Lad os dele:
  http://www.eksperten.dk/spm/308300

telac2 >> Du kan (må) kun tildele 200 points til hvert spm. Det er dog også mere end rigeligt. Tak for points  ;o)
/mvh
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