Avatar billede kischi Novice
03. oktober 2012 - 12:08 Der er 10 kommentarer og
1 løsning

filstørelse validering

Hej,

Jeg har nu lavet en validering i javascript som tjekker om der er uploadet en fil, er der også en simpel måde at tjække om filen er mindre end 2 mb.

Og hvis den ikke er det, så kommer der en popup som også gør hvis der ikke er nogen fil?

Håber i forstår hvad jeg mener, her er min javascript som tjekker om der allerede er en fil:

function validateForm()
{
var x=document.forms["profile"]["file_name"].value;
if (x==null || x=="")
  {
  alert("An image must be uploadet");
  return false;
  }
}

Håber der er nogen der kan hjælpe
Avatar billede kalp Novice
03. oktober 2012 - 12:39 #1
Avatar billede kalp Novice
03. oktober 2012 - 12:41 #2
Jeg vil i øvrigt lige sige at jeg normalt ville foretage sådan et tjek på serveren med f.eks PHP, ASP.NET og lignende
Avatar billede kischi Novice
03. oktober 2012 - 13:13 #3
Tak for svar, men jeg er ikke helt med.

Det første eksempel udskriver vel hvor stor filen er.

Så det er vel det andet eksempel jeg bør bruger.
Men skan denne kodestump ind i mit javacript:

$.validator.addMethod('filesize', function(value, element, param) {
    // param = size (en bytes)
    // element = element to validate (<input>)
    // value = value of the element (file name)
    return this.optional(element) || (element.files[0].size <= param)
});

Altså in i det her:

function validateForm()
{
var x=document.forms["profile"]["file_name"].value;
if (x==null || x=="")
  {
  alert("An image must be uploadet");
  return false;
  }
}




</script>

Og hvor ville jeg så skulle placere dette her:

$('#formid').validate({
    rules: { inputimage: { required: true, accept: "png|jpe?g|gif", filesize: 1048576  }},
    messages: { inputimage: "File must be JPG, GIF or PNG, less than 1MB" }
});


I min kode som ser sådan her ud:

<?php
    include_once( 'class/phUploader.php' );
    ?>


<div id="profile_txt">
Upload the picture you want as a profile picture on facebook and type in your email.
A moment later you will recieve an e-mail with your new profile picture.
</div>
<br><br>
<table width="450">
<div id="form">

    <form method="post" action="../somefile.php" name="profile" enctype="multipart/form-data" onsubmit="return validateForm(this)">
  <tr>  <td width=20>
        <label for="Upload Image">Upload image</label>
        </td>
        <td width=20>
        <input id="file_name" name="file_name" type="file">
        </td>
</tr>
<tr>
<td width=50>
        <div class="input-row"><label for="mail">E-mail: </label>
</td>
        <td width=0>
        <input id="mail" name="mail" type="text" /></div>
</td>
</tr>
<tr>
<td>
        <input name="upload" value="Upload" type="submit">
        </td>
</tr>
</table>
       
       
    </form>
</div><!-- end form -->

Jeg håber du forstår hvad jeg mener.

Og med hensyn til at du normal ville fortage et tjek på serveren, hvordan ville man kunne det hvis billedet ikke bliver gemt på serveren.

Tak for hjælpen
Avatar billede olebole Juniormester
03. oktober 2012 - 13:20 #4
<ole>

Du skal nok begynde med at lære, hvad jQuery er, og hvordan det virker. Du kunne jo begynde med dokumentationen

/mvh
</bole>
Avatar billede kischi Novice
03. oktober 2012 - 14:06 #5
Ok, nu har jeg læst det, der er stadig noget jeg ikke helt er med på.

Den siger man skal lave en anden fil, men senere virker det som om man godt kan skrive det hele i samme fil.

Så nu har jeg prøvet at skrive det samlet, men det virker stadig ikke.

anden del havde jeg også prøvet at sætte længere nede i koden, men så får jeg fejl.

Her får jeg ikke fejl, men den siger heller ikke noget hvis billedet er over 2mb.

Jeg har sikkert gjort et eller andet forkert? :(

Tak for hjælpen

Nu ser alt min kode sådan her ud:

<script language="javascript" type="text/javascript">

function validateForm()
{
var x=document.forms["profile"]["file_name"].value;
if (x==null || x=="")
  {
  alert("An image must be uploadet");
  return false;
  }
}

</script>

</head>

<body>

<script>

$.validator.addMethod('filesize', function(value, element, param) {
    param = size (2000)
    element = element to validate (<file_name>)
    // value = value of the element (file name)
    return this.optional(element) || (element.files[0].size <= param)
});

    $('#filename').validate({
    rules: { inputimage: { required: true, accept: "png|jpe?g|gif", filesize: 2000  }},
    messages: { inputimage: "File must be JPG, GIF or PNG, less than 2MB" }
});

</script>


<div id="profile_txt">
Upload the picture you want as a profile picture on facebook and type in your email.
A moment later you will recieve an e-mail with your new profile picture.
</div>
<br><br>
<table width="450">
<div id="form">

    <form method="post" action="../somefile.php" name="profile" enctype="multipart/form-data" onsubmit="return validateForm(this)">
  <tr>  <td width=20>
        <label for="Upload Image">Upload image</label>
        </td>
        <td width=20>
        <input id="file_name" name="file_name" type="file">
        </td>
</tr>
<tr>
<td width=50>
        <div class="input-row"><label for="mail">E-mail: </label>
</td>
        <td width=0>
        <input id="mail" name="mail" type="text" /></div>
</td>
</tr>
<tr>
<td>
        <input name="upload" value="Upload" type="submit">
        </td>
</tr>
</table>
       
       
    </form>
</div><!-- end form -->
Avatar billede olebole Juniormester
03. oktober 2012 - 14:17 #6
*LoL* så du mener at have lært, hvad jQuery er, og hvordan det bruges, på 40 minutter ...?!??!!! Godt gået!  :D

Importerer du overhovedet jQuery?
Avatar billede olebole Juniormester
03. oktober 2012 - 14:20 #7
- og så tror jeg da vist, du lærte at skrive et SCRIPT-tag i denne tråd  *o)

Hint: Language attributten har været depracted de seneste 12-13 år
Avatar billede kalp Novice
03. oktober 2012 - 14:25 #8
xD
Avatar billede kischi Novice
03. oktober 2012 - 14:38 #9
Jeg ved ikke om jeg har lært at bruge jquery 100% men jeg skal vel starte et sted.
Jeg forsøger at forstå det, men mener ikke der står noget om at jeg skal importere jquery.

Kan man ikke benytte sig af jquery ligesom javascript?

Min javascript virker jo uden jeg har importeret noget?

Nu har jeg ihvertfald sammenkoblet de 2 script tags så der kun er et, vidste ikke lige at language var udgået, ser det stadig rundt omkring.

Oh ja, jeg mente og at jeg lærte det i sidste tråd, men dette script starter jo ikke med funktion, og hvis jeg allerede har benyttet mig af onsubmit, hvordan skal jeg så kalde på den nye.

Er der en måde jeg kan sammen skrive de to scripts som validere, altså om der er en fil og om den fylder mere end 2mb. fordi så ville jeg jo bare kunne kalde samme funktion i onsubmit tagget.

Så det vil sige, kan jeg sammenkode dette:

function validateForm()
{
var x=document.forms["profile"]["file_name"].value;
if (x==null || x=="")
  {
  alert("An image must be uploadet");
  return false;
  }
}

Med dette:

$.validator.addMethod('filesize', function(value, element, param) {
    param = size (2000)
    element = element to validate (<file_name>)
    // value = value of the element (file name)
    return this.optional(element) || (element.files[0].size <= param)
});

Jeg tror nok det er det jeg skal gøre for at kalde den, er det ikke korrekt?

Håber du forstår hvad jeg mener.
Avatar billede olebole Juniormester
03. oktober 2012 - 14:45 #10
Du har helt ret! Du har ikke lært 1% endnu! Du kan ikke læse en halv Pixi-bog og forvente, du drved lærer at flyve en jumbojet på en halv time. Læs og lær!
Avatar billede kischi Novice
04. oktober 2012 - 23:32 #11
Jeg fandt ud af at jeg bare kunne lave en else i min php så nu virker det.

Det behøvede slet ikke at være så kompliseret. :)

så indsatte bare min elseefter jeg havde eksekveret koden.

Hvis den ikke bliver uploadet sker dette.

else {
        echo " <font color='black'>file too large</font><br /><br />";
        echo "<a href='ajax/profile.php'><font color='black'>OK</font></a>";
         
        }

Men tak for hjælpen ihvertfald :)
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