Avatar billede kimox Nybegynder
13. februar 2011 - 16:18 Der er 17 kommentarer og
1 løsning

hurtig hjælp til upload

Hej Eksperter.

jeg har et upload script jeg gerne vil have ændret lidt i, jeg håber i kan hjælpe..

mit script:
//Find antllet af filer til upload
for($i = 0; $i < count($_FILES['upfile']['name']); $i++) {

    if (isset($_FILES['upfile']['name'][$i]) && $_FILES['upfile']['name'][$i] !="") {
   
//se http://dk.php.net/manual/en/function.is-uploaded-file.php for "is_uploaded_file"       
        if(is_uploaded_file($_FILES['upfile']['tmp_name'][$i])) {

//Flyt filer fra upload-tmp til et dir. Husk at ændre "$dist" ovenover så det passer med din server :O)
move_uploaded_file($_FILES['upfile']['tmp_name'][$i], $dist ."/". $_FILES['upfile']['name'][$i]);

        }

jeg kunne godt tænke mig at den omdøber navnet på den fil jeg smider op.

Navnet skal ændret til: jb_$dato_$tid - tiden skal være med sekunder...

Kan i hjælpe? :-(
Avatar billede majbom Novice
13. februar 2011 - 17:00 #1
//Find antllet af filer til upload
for($i = 0; $i < count($_FILES['upfile']['name']); $i++) {
  if (isset($_FILES['upfile']['name'][$i]) && $_FILES['upfile']['name'][$i] !="") { 
      //se http://dk.php.net/ (...) for "is_uploaded_file"     
      if(is_uploaded_file($_FILES['upfile']['tmp_name'][$i])) {

      //find filnavn
      $ext = end(explode('.', $_FILES['upfile']['name']));
      $dato = date('dmY_His');
      $new_filename = "jb_" . $dato . "." . $ext;

      //Flyt filer fra upload-tmp til et dir. Husk at ændre "$dist" ovenover så det passer med din server :O)
      move_uploaded_file($_FILES['upfile']['tmp_name'][$i], $dist ."/". $_FILES['upfile']['name'][$i]);
  }
}


burde klare opgaven...
Avatar billede majbom Novice
13. februar 2011 - 17:02 #2
og så skal

move_uploaded_file($_FILES['upfile']['tmp_name'][$i], $dist ."/". $_FILES['upfile']['name'][$i]);


selvfølgelig lige ændres til:

move_uploaded_file($_FILES['upfile']['tmp_name'][$i], $dist ."/". $new_filename);
Avatar billede kimox Nybegynder
13. februar 2011 - 17:17 #3
først og fremmest tak fordi du vil hjælpe :-)

JEg har prøvet at sætte den ind, men jeg får en lille fejl.

du får lige hele koden:

<?php

if (isset($_POST['submit'])) {
//stien, hvortil filerne skal placeres   
$sti_start = $_SERVER["DOCUMENT_ROOT"];
$sti = str_replace("..", "", $sti);
$sti_hel = $sti_start ."/web". $sti;
$dist = "$sti_hel";

//Find antllet af filer til upload
for($i = 0; $i < count($_FILES['upfile']['name']); $i++) { 
if (isset($_FILES['upfile']['name'][$i]) && $_FILES['upfile']['name'][$i] !="") {

//se http://dk.php.net/ (...) for "is_uploaded_file"
if(is_uploaded_file($_FILES['upfile']['tmp_name'][$i])) {

//find filnavn
$ext = end(explode('.', $_FILES['upfile']['name']));
$dato = date('dmY_His');
$new_filename = "jb_" . $dato . "." . $ext;

//Flyt filer fra upload-tmp til et dir. Husk at ændre "$dist" ovenover så det passer med din server :O)
move_uploaded_file($_FILES['upfile']['tmp_name'][$i], $dist ."/". $new_filename);

  }
  }
        } else {

    echo"Upload til serveren skete ikke!";

    }

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

        }
    }
echo "<span align=\"center\"><br />
    <table width=\"250\" class=\"nyh_border\" align=\"center\" cellpadding=\"0\" cellspacing=\"0\" bordercolor=\"#000000\" border=\"1\">
    <tr>
    <td bgcolor=\"#F8F8F8\" class=\"main_txt\" valign=\"top\"><div align=\"left\" valign=\"middel\">&nbsp;<img src=\"../images/godkend.gif\" width=\"22\" height=\"22\">&nbsp;Billedet blev lagt op.</div></td>
    </tr>
    </table></span><br>";
}
?>

den siger:

Parse error: syntax error, unexpected T_ELSE in /var/www/xxx/public_html/xxx/xx/xxx.php on line 40

kan du se hvorfor
Avatar billede webweaver Praktikant
13. februar 2011 - 19:22 #4
Det ser ikke ud til at dine {} passer helt.
Det virker som om du har 1 for meget i bunden.

Du skal åbne og lukke lige mange af dem.

Udover det, skal du rykke 1 } op over else ser det ud til ...
Avatar billede majbom Novice
13. februar 2011 - 19:27 #5
det var fordi jeg satte en ekstra } på, det manglede der nemlig i koden, men jeg kan se at når den bliver sat ind i den oprindelige kode, skulle den ikke være der - så hvis du bare sletter den sidste } i den stump kode jeg skrev i #1, så skulle det spille...
Avatar billede kimox Nybegynder
14. februar 2011 - 12:46 #6
det havde jeg også prøvet, men det viste sig at der var faktisk 2 for meget :-)

Men nu siger den fejl her:
Warning: explode() expects parameter 2 to be string, array given in /var/www/xxxx.dk/public_html/xxx/xx/xxx.php on line 31

Warning: end() expects parameter 1 to be array, null given in /var/www/xxxx.dk/public_html/xxx/xxx/xxxx.php on line 31

det er denne linje:
$ext = end(explode('.', $_FILES['upfile']['name']));
Avatar billede kimox Nybegynder
14. februar 2011 - 12:58 #7
for at være rigtig træls, kan du så sørge for at de beholder deres originale navn bare uden mellemrum og æøå?

- eller skal jeg vente og lave det i en ny tråd?
Avatar billede kimox Nybegynder
14. februar 2011 - 14:18 #8
jeg har også lige set at den desværre ikke får lagt noget op med ".jpg" - den fortæller altså ikke filen at den skal hedde f.eks. jpg - den lægger bare filen op og kalder den f.eks: "jb_14022011_124312."
Avatar billede majbom Novice
14. februar 2011 - 14:24 #9
$ext = end(explode('.', $_FILES['upfile']['name']));


skal rettes til:

$ext = end(explode('.', $_FILES['upfile']['name'][$i]));


så burde alle problemerne løse sig...
Avatar billede kimox Nybegynder
14. februar 2011 - 14:35 #10
super det fixede da fejlene :-) - ville du hjælpe med #7 ? eller skal jeg oprette en ny tråd? - for dette script er super til den funktion hvor jeg kun ligger 1 billede op af gangen.

Men den er også lavet til at den skal kunne lægge flere billeder op af gangen... og hvis jeg smider 5 billeder op på en gang, vil de så ikke få samme navn ? da de bliver lagt op samme dato og tidspunkt?
Avatar billede majbom Novice
14. februar 2011 - 15:12 #11
skift:

//find filnavn
$ext = end(explode('.', $_FILES['upfile']['name'][$i]));
$dato = date('dmY_His');
$new_filename = "jb_" . $dato . "." . $ext;


ud med:

$new_filename = trim($_FILES['upfile']['name'][$i], 'æøå');
Avatar billede kimox Nybegynder
14. februar 2011 - 15:14 #12
jamen den skal stadig have dato osv med.

jeg vil gerne have at filnavnet skal se sådan ud:

jb_dato_tid_$billedenavn.jpg
Avatar billede kimox Nybegynder
14. februar 2011 - 15:14 #13
hvis altså det er et jpg man smider op
Avatar billede majbom Novice
14. februar 2011 - 16:15 #14
okay - du tror ikke selv at du kan sætte det samme af den kode jeg har skrevet til dig indtil videre? :)
Avatar billede kimox Nybegynder
14. februar 2011 - 17:19 #15
jo havde jeg også gjort da du skrev, ved ikke hvorfor jeg spurgte hehe.

men jeg har ændret det så den ser sådan ud:

//find filnavn
$ext = end(explode('.', $_FILES['upfile']['name'][$i]));
$dato = date('dmY_His');
$oldtrim = $_FILES['upfile']['name'][$i];
$oldtrim = str_replace("/", "", $oldtrim);
$oldtrim = str_replace(".", "", $oldtrim);
$oldtrim = str_replace(" ", "", $oldtrim);
$oldtrim = str_replace("ø", "oe", $oldtrim);
$oldtrim = str_replace("å", "aa", $oldtrim);
$oldtrim = str_replace("æ", "ae", $oldtrim);
$new_filename = "jb_" . $dato . $oldtrim . "." . $ext;

Smid et svar Splazz -
Avatar billede majbom Novice
14. februar 2011 - 20:27 #16
kommer her :)
Avatar billede kimox Nybegynder
14. februar 2011 - 20:44 #17
tusind tak for hjælpen ! - og her er de velfortjente point :-)

- Lukket -
Avatar billede majbom Novice
14. februar 2011 - 21:17 #18
selv tak, og tak for point :)
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