Avatar billede jalaba Nybegynder
25. november 2007 - 16:07 Der er 8 kommentarer og
1 løsning

Simpel upload

Jeg har læst i manualen, og fundet funktionerne copy, move_uploaded_file osv.

Men jeg kan ikke rigtigt gennemskue hvilke funktioner man bør bruge. Jeg skal blot tjekke om når der er 'submitted', så er valgt en fil i min <input type="file" ..>, og derefter lægge den i en mappe.

Hvordan gøres det så simpelt som muligt?

Er det noget alá:

if(count($_FILES) >= 1) {
    if(copy($_FILES['tmp_name'], $_SERVER['DOCUMENT_ROOT'] . "/uploaded_filer/" . $_FILES['name']))
    {
        return true;
    }
}

Jeg vil vide hvordan det er mest korrekt og hvordan jeg tjekker filtypen.
Avatar billede jalaba Nybegynder
25. november 2007 - 16:12 #1
Kan man forresten ikke uploade filerne direkte i mysql-databasen istedet for både, at have informationer i databasen OG filerne på serveren? Tror jeg har hørt noget om BINARY UPLOAD
Avatar billede whatever Nybegynder
25. november 2007 - 16:51 #2
Brug altid move_uploaded_file() og ikke copy(), til flytningen af uploadede filer. Move_uploaded_file() tillader kun at flytte filer der reelt er uploadet via PHPs HTTP_POST, desuden sletter den jo tmp-filen efterfølgende, hvilket copy() ikke går.
Avatar billede whatever Nybegynder
25. november 2007 - 16:54 #3
Desuden kan copy() også give nogle problemer i forhold til open_basedir og safe_mode, hvilket ikke burde ske med move_uploaded_file().

Og jo, du kan godt gemme filerne direkte i databasen, du skal dog bare være opmærksom på at databasens størrelse hurtigt vil vokse meget. Du kan se en guide til dette på http://www.php-mysql-tutorial.com/php-mysql-upload.php.
Avatar billede erikjacobsen Ekspert
25. november 2007 - 17:11 #4
Dette er et godt eksempel: http://www.eksperten.dk/artikler/1098
Avatar billede jalaba Nybegynder
25. november 2007 - 18:31 #5
tak for det whatever og erikjakobsen! læg et svar whatever.

hvad med validering af filnavnene. hvad kan man gøre dér? jeg har jo i sinde at uploade filer med blandt andet æ, ø, å og mellemrum.
Avatar billede whatever Nybegynder
25. november 2007 - 18:49 #6
Umiddelbart ville jeg nok strippe alle ugyldige karakterer i stedet.

F.eks.:

$new_filename = preg_replace("/[^a-zA-Z0-9\.\-\_]/","",$old_filename);
Avatar billede whatever Nybegynder
25. november 2007 - 18:50 #7
Så du undgår evt. problemer med øæå, mellemrum etc.. Måske burde du konsekvent lave filnavnene lowercase.

$new_filename = preg_replace("/[^a-z0-9\.\-\_]/","",strtolower($old_filename));
Avatar billede jalaba Nybegynder
25. november 2007 - 19:31 #8
findes der ikke en indbygget funktion til at replace mellemrum med + og lave Ø om til OE, Å til AE osv?
Avatar billede jalaba Nybegynder
25. november 2007 - 19:34 #9
og Å skal selvfølgelig laves til AA og ikke AE ;)
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