Avatar billede avminarm Juniormester
11. marts 2004 - 16:05 Der er 7 kommentarer og
1 løsning

navngive filer der uploades så man kan finde dem igen

Hej

Jeg sidder og roder med noget upload og man har mulighed for at uploade flere filer på engang, men nårfilen bliver flyttet på serveren skal den hedde noget der kan identificere den i forhold til hvilket projekt den hører til.

f.eks. 3 filer uploades og hører til projekt med id: 78.

for at finde filtypen bruger jeg strstr(): $type = strstr($fil, '.');

men jeg skal have navngivet filen så jeg ved hvilket projekt den hører til og hvad nummer den har - og så skal jeg kunne finde den igen - jeg kan ikke lige gennemskue det?

jeg håber det er forklaret godt nok!
Avatar billede sukos Juniormester
11. marts 2004 - 17:38 #1
du bruger vel en forløkke til at at uploade flere filer?
Og det id som er tilknyttet, kan jo så være et hiddenfelt sammen med uploadformen.

$nr = 1;
for($i = 0;.................) {
$nr++;
$name = $_POST["id"] ."_". $nr ."_". $_FILES["upfile"]["name"][$i];
}
Så bruger du $name til at omdøbe, når du flytter filen.
Avatar billede avminarm Juniormester
11. marts 2004 - 20:50 #2
*g* - bruger faktisk dit gl. uploadscripts (multiupload) som basis!, men hvordan mener du bruger name? direkte i move_uploaded_files()?

og til sidst - jeg skal ud fra fil navnet (når det er blevet uploaded og ligger på serveren) både kunne udtrække projekt id og fil-nr - det er det der bl.a. er mit problem
Avatar billede sukos Juniormester
11. marts 2004 - 22:27 #3
I din uploadform, har du et hiddenfelt, "id", som angiver hvilket id du vil ha'

Og så prøv denne:

<?php

$dist = $_SERVER["DOCUMENT_ROOT"] ."/upload/";

if (isset($_FILES["upfile"], $_POST["id"])) {

echo"&Oslash;nskede filer til upload:<p>\n";

$nr = 0;

//Find antallet af felter til upload med en for-løkke
for($i = 0; $i < count($_FILES["upfile"]["name"]); $i++) {

    if ($_FILES["upfile"]["name"][$i] !="") {
   
    $nr++;
        if(is_uploaded_file($_FILES["upfile"]["tmp_name"][$i])) {
    $_FILES["upfile"]["name"][$i] = str_replace("_", "", $_FILES["upfile"]["name"][$i]);
    $name = $_POST["id"] ."_". $nr ."_". $_FILES["upfile"]["name"][$i];
    move_uploaded_file($_FILES["upfile"]["tmp_name"][$i], $dist . $name);

    //til brug for info om filtyper
    $str1 = $_FILES["upfile"]["name"][$i];
    $str2 = $_FILES["upfile"]["size"][$i];
    $str3 = $_FILES["upfile"]["type"][$i];

    echo"<b>Navn:</b> ". $str1 .", <b> st&oslash;rrelse:</b> ". $str2 ." bytes, <b>filtype:</b> ". $str3 ."<br>\n";

        }else{

    echo"Upload til serveren skete ikke!";

            }
        }
    }

if($nr < 1) { //Hvis der ingen filer er valgt
echo"V&aelig;lg en eller flere filer til upload! <a href=\"uploadform.php\">tilbage</a>";
    }else{
echo"<a href=\"uploadform.php\">tilbage</a>";
    }

}
?>
Avatar billede sukos Juniormester
11. marts 2004 - 22:31 #4
ehh, så kan du jo altid adskille id og nr på fil med:

explode("_", $filnavn);

for at
$id = $fil[0];
$filnr = $fil[1];
$navn = $fil[2];
Avatar billede sukos Juniormester
11. marts 2004 - 22:36 #5
ehh, der er noet jeg ikke helt fatter, men scriptet virker her :O)
Avatar billede avminarm Juniormester
11. marts 2004 - 22:41 #6
damn - selvfølgelig "explode" - jeg ved ikke hvorfor, men jeg glemmer altid explode og implode??

hvad fatter du ikke helt ;o) + smid lige et svar
Avatar billede sukos Juniormester
11. marts 2004 - 22:56 #7
Det jeg ikke fattede fatter jeg nu! :O) (mig som var et fjog!)
Avatar billede avminarm Juniormester
12. marts 2004 - 09:04 #8
tak for hjælpen
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