Avatar billede michaelb.dk Nybegynder
17. januar 2006 - 15:31 Der er 15 kommentarer og
1 løsning

Billedeupload - tilføj fejlkoder

Jeg vil være meget taknemmelig for et par tilføjelser til følgende uploadscript. Det drejer sig om følgende:

1) Hvis folk uploader et billede over 200kb skal der komme en fejlmeddelelse om at det pågældende billede er for stort.

2) Hvis folk bruger æ, ø, å eller underlige tegn skal de enten omdøbes, eller er skal komme en fejlmeddelelse om at det pågældende billede er forkert navngivet.

Bemærk: Koden er kopieret direkte fra mit websted.
--------------------------------------------------------------

<?php

if (isset($_FILES['upfile'])) {

$dist = "";

for($i = 0; $i < count($_FILES['upfile']['name']); $i++) {

    if (isset($_FILES['upfile']['name'][$i]) && $_FILES['upfile']['name'][$i] !="") {

            if(file_exists($_FILES['upfile']['name'][$i])) {
            $str1 = $_FILES['upfile']['name'][$i];
                echo "<blockquote><font face=verdana size=1><b>Fejl med billede: $str1</b><br><br>Der eksisterer allerede et billede i mappen med samme navn.<br><a href=\"$_SERVER[PHP_SELF]\">Gå tilbage, omdøb filen og prøv igen</a></font></blockquote><br>";
            } else {

        if(is_uploaded_file($_FILES['upfile']['tmp_name'][$i])) {

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

        }else{

    echo"Upload til serveren skete ikke!";

    }
$str1 = $_FILES['upfile']['name'][$i];

echo "<table><tr><td><a href=http://ffserver.dk/uploads/upl/$str1 target=_blank><img src=http://ffserver.dk/uploads/upl/$str1 width=150 height=90 border=0></a></td><td><font face=verdana size=1>For at indsætte dette billede skal du kopiere følgende kode ind i din tråd:<br><b>&#91;IMG&#93;http://ffserver.dk/uploads/upl/$str1&#91;/IMG&#93;</b><br><br>Er billedet for stort? <a href=http://bonusmor.dk/fugleforumresize/><b>Nedskalér det</b></a></font></td></tr></table><br>";
        }
        }
    }
echo"</p>";
echo"<center><font face=verdana size=1><a href=\"$_SERVER[PHP_SELF]\">Tilbage og upload flere filer</a></font></center>";
}else{
?>

<form enctype="multipart/form-data" action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">

<input name="upfile[]" type="file" size="32" style='font-family: verdana; font-size: 8pt; background-color=#E3E3E3; border: 1px solid #000000'><br>

<center><input type="submit" value="Upload billede(r)" size="48" class="submit" style='font-family: verdana; font-size: 8pt; background-color=#E3E3E3; border: 1px solid #000000'><br><br>

</form>

<?php
}
?>
Avatar billede jaw Nybegynder
17. januar 2006 - 16:26 #1
Den første kan du måske løse ved at indsætte så det bliver:

            if($_FILES['upfile']['size'] > 200000) {
              echo "Filen ".$_FILES['upfile']['name']." er for stor!";
            } elseif(file_exists($_FILES['upfile']['name'][$i])) {
Avatar billede showsource Seniormester
17. januar 2006 - 23:25 #2
Er det kun et billede du vil uploade?
Hvorfor så en forløkke.

Et andet uploadscript med lidt fejlmeddelser:
http://www.showsource.dk/php/vis_script.php?id=1118177424
Avatar billede michaelb.dk Nybegynder
18. januar 2006 - 14:49 #3
jaw: hvor skal jeg indsætte koden?

showsource: der skal være fem uploadfelter at vælge imellem: derfor er det relevant at man får at vide hvilken fil der ikke blev uploadet. :)
Avatar billede jaw Nybegynder
18. januar 2006 - 14:51 #4
Den sidste linie, har du i forvejen, hvor jeg bare har lavet "if" om til "elseif". Så det skal stå, så det bliver udbygget i forhold til den linie. Forståeligt? :)
Avatar billede michaelb.dk Nybegynder
18. januar 2006 - 14:57 #5
Hmm.. den fik jeg ikke nej :)
Altså skal det stå på sidste linie?
Avatar billede jaw Nybegynder
18. januar 2006 - 14:59 #6
Nej, du har denne linie:
if(file_exists($_FILES['upfile']['name'][$i])) {

På ca. linie 8-10 stykker. Den skal du så ændre, til det jeg skrev i går.
Avatar billede michaelb.dk Nybegynder
18. januar 2006 - 15:07 #7
Ahh, det forstod jeg ;-)
Måtte lige rette lidt, for at få den til at skrive filens navn på fejlmeddelelsen:

            if($_FILES['upfile']['size'] > 200000) {
              $str1 = $_FILES['upfile']['name'][$i];
              echo "Filen $str1 er for stor!";
            } elseif(file_exists($_FILES['upfile']['name'][$i])) {

Kan du også klare mit problem nr. 2? :)
Avatar billede jaw Nybegynder
18. januar 2006 - 16:03 #8
Umm, tjoh måske. Den her vil godtage bogstaverne A-Z, tal og tegnene _ og -:

if(!preg_match("/^[a-z0-9_-]+$/i", $_FILES['upfile']['name'][$i])) {
  echo "Filen ".$_FILES['upfile']['name'][$i]." har et ugyldigt navn.";
} elseif($_FILES['upfile']['size'] > 200000) {

Og igen samme sæt-ind princip :)
Avatar billede michaelb.dk Nybegynder
18. januar 2006 - 21:30 #9
Jeg har lige opdaget en fejl i scriptet.. Det kan faktisk ikke uploade billeder der er mindre end 200kb... Ikke engang små gif billeder på under 10kb?
Avatar billede jaw Nybegynder
18. januar 2006 - 21:44 #10
Denne:
} elseif($_FILES['upfile']['size'] > 200000) {
skal du lige tilføje [$i] til, så det bliver:
} elseif($_FILES['upfile']['size'][$i] > 200000) {

Hvornår virkede det sidst? Før første eller anden opdatering?
Avatar billede michaelb.dk Nybegynder
18. januar 2006 - 21:51 #11
nu fungerer det som det skal :-)
men æ, ø, å virker stadig ikke
Avatar billede michaelb.dk Nybegynder
18. januar 2006 - 21:53 #12
Når jeg ændrer preg_match linien til:

if(!preg_match("/^[a-z0-9._-]+$/i", $_FILES['upfile']['name'][$i])) {

altså så der er et . med, så fungerer det.. giver det ikke rimelig god mening?
Avatar billede michaelb.dk Nybegynder
18. januar 2006 - 21:54 #13
jeg har også tilføjet et mellemrum.
Avatar billede jaw Nybegynder
18. januar 2006 - 22:01 #14
At det virker med et punktum giver ret god mening :) Den havde jeg ikke lige tænkt på.
Avatar billede michaelb.dk Nybegynder
18. januar 2006 - 22:01 #15
ok, det var godt, såvidt jeg kan se fungerer det hele som det skal nu! du skal have mange tak for hjælpen!
Avatar billede jaw Nybegynder
18. januar 2006 - 22:14 #16
Jamen selv tak da :) Så vil jeg tillade mig at smide et svar...
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