Avatar billede augustjoergensen Nybegynder
30. oktober 2004 - 00:20 Der er 12 kommentarer

Kopiering af hel mappe(dir) vha. php

Hvordan får jeg php til at kopiere en hel mappe som brugeren vælger vha at indskrive directory som fx:
c:/billeder/ hvorefter, alle filer i denne mappe kopieres, jeg fandt en motode til hvordan dette kunne gøres, men denne virker ikke over den serveren:

function copyr($source, $dest){   

    if(!eregi("\.jpg",$source)){
        // Make destination directory   
        if (!is_dir($dest)) {       
            mkdir($dest);   
        }   
    } else {
        $filMappe = substr($dest,0,strrpos($dest,'/')+1);
        if (!is_dir($filMappe)) {       
            mkdir($filMappe);   
        } 
    }
      // Simple copy for a file 
      if(eregi("\.jpg",$source)){ 
        if (is_file($source)) {       
            return copy($source, $dest);   
        }
    }
    // Loop through the folder   
    $dir = dir($source);   
    while (false !== $entry = $dir->read()) {       
        // Skip pointers       
        if ($entry == '.' || $entry == '..') {         
            continue;       
        }   
        // Deep copy directories       
        if (is_dir("$source/$entry") && ($dest !== "$source/$entry")) {           
            copyr("$source/$entry", "$dest/$entry");       
        } else {           
            copy("$source/$entry", "$dest/$entry");       
        }   
    }    // Clean up   
    $dir->close();   
    return true;
}

***Denne funktion gjorde at brugeren både kunne uploade et billede eller flere og virker når jeg tester på min egen comp

Mit problem kommer så nu, hvor jeg har fået afvide jeg skal bruge fx: move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile) altså, jeg kan ikke på samme måde gå igennem det "dir" som brugeren sender, og kopiere denne, er der en anden måde jeg kan kopiere et hel "dir"? således at det er dynamisk?
Avatar billede augustjoergensen Nybegynder
30. oktober 2004 - 14:28 #1
Ingen som vil svare? ;)
Avatar billede augustjoergensen Nybegynder
31. oktober 2004 - 00:30 #2
Eftersom ingen har sagt noget, ser jeg det som at det ikke kan gøres på den måde, en anden måde jeg har tænkt over er at bruge ZIP i PHP
Avatar billede olebole Juniormester
01. november 2004 - 06:36 #3
<ole>

Jeg tror, årsagen til den manglende respons er, at folk ikke forstår dit spørgsmål. Jeg har lidt svært ved at forstå præcist, hvad det er, du ikke kan finde ud af  :)

/mvh
</bole>
Avatar billede augustjoergensen Nybegynder
01. november 2004 - 19:10 #4
olebole specifike er det er kopiere en hel mappe vha. php, atm kan man kun kopiere en fil af gangen, jeg har dog fået det lavet vha. at brugeren skal sende en zip fip.

- det ville dog have været bedre hvis brugeren kunne sende en mappe!
Avatar billede olebole Juniormester
01. november 2004 - 21:19 #5
Jeg er ked af det, men det hjalp ikke
Avatar billede augustjoergensen Nybegynder
02. november 2004 - 17:44 #6
Altså :) så den lange forklaring!

Man kan nemt upload et billede fra et script på internettet til en FTP.
Men ikke flere i samme <input type="file">, altså det jeg prøver at lave er en funktion som kopiere en HEL mappe, med fx billeder.

For at kunne kopiere skal du kalde din form: enctype="multipart/form-data"
Hvilket betyder at man kun kan vælge en fil, metoden som jeg brugte i scriptet i min første post er lavet på en anden måde, denne virker lokalt og kopiere en HEL Mappe, som brugeren sender, dette kan den pga, den bruger ikke ENCTYPE!

Men som skrevet ovenfor har jeg lavet det vha. zip nu, hvor php scriptet automatisk udpakker denne til det dir jeg skal bruge.

Håber denne forklaring er bedre ;(
Avatar billede hmortensen Nybegynder
02. november 2004 - 17:58 #7
Hvordan har ud lavet en form hvor du kan vælge flere filer i ?
Avatar billede olebole Juniormester
02. november 2004 - 18:32 #8
Nååhhhh , så forstår jeg bedre  :D
Du har jo ikke uploaded en snus. Du har kopieret en mappe fra ét sted på din PC til et andet sted på din PC. Det kan du sagtens, men det har intet med en upload at gøre ... du har bare flyttet rundt på dem, internt på PC'en  :)

Under normale omstændigheder skal du lave en form med et eller flere <input type="file">. Man kan så udvælge en eller flere filer med disse inputs og uploade dem ved at submitte formen. Formen skal helt rigtig være encoded som 'multipart/formdata' - da der er tale om transport af binære filer.

Du _kan_ i princippet læse filen som en binær stream og sende det med en XMLHttp-request. På den måde vil du kunne udvælge en mappe og uploade dens filer i en løkke.
En standard Windows installation indeholder de nødvendige komponenter, men det er ikke en synderlig fremragende løsning. Dels er det noget af en konverteringskode, du skal skrive ... dels skal brugeren acceptere advarsler om brug af ActiveX ... dels fungerer det kun i IE.
Jeg lavede engang en komponent, der kunne - men det tog lang tid og det er en skodløsning.

Løsningen er enten at zippe filerne eller at lave en form med mange inputs af typen 'file'  :)
/mvh
Avatar billede hmortensen Nybegynder
02. november 2004 - 18:36 #9
Eller benytte sit ftp program :)
Avatar billede augustjoergensen Nybegynder
02. november 2004 - 21:02 #10
hmortensen, altså ;) skal lave et system som er nemt at bruge ligemeget hvor man er.... og det skal ikke være vha. ftp det skal være 100% user friendly til folk som ikke forstår så meget til den slags
Avatar billede augustjoergensen Nybegynder
02. november 2004 - 21:07 #11
olebole, tak for dit respons... metoden jeg bruger er nu zip som virker meget godt, men ikke ligså godt som kopiering af en hel mappe ;(
Avatar billede augustjoergensen Nybegynder
02. november 2004 - 21:09 #12
Du kan ikke vha at skrive 'multipart/formdata' kopiere en hel mappe, du kan max kopiere en fil! altså du kan godt flere man så skal man lave flere input felter
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