Avatar billede kimlarsen1978 Nybegynder
11. maj 2003 - 15:51 Der er 18 kommentarer og
1 løsning

Validering af Billede i upload

Hej
Jeg uploader billeder på denne måde:
---------
  randomize
  n=int(10000000*rnd)

  Set Upload = Server.CreateObject("Persits.Upload")
  Count = Upload.SaveToMemory
  Upload.SetMaxSize 50000, True
  For Each File in Upload.Files
 
  Dim FileName
  FileName = File.ExtractFileName
  File.SaveAs "d:\Billeder\"& n & FileName
  Next
-------------
Men det der "Upload.SetMaxSize 50000, True" virker ikke, jeg kan uploade ligeså store billeder/Filer som jeg har lyst til.

Jeg vil gerne:
- at hvis billede er over 50000 bytes, så skal den returer en fejl
- at man kun kan uploade gif og jpg

Hvordan??
Avatar billede eagleeye Praktikant
11. maj 2003 - 15:58 #1
Det med fil typen kan du lave sådan her:

For Each File in Upload.Files

  If File.ImageType <> "GIF" and File.ImageType <> "JPG" Then
    Response.Write "GIF or JPG files only please!"
    Exit For
  End If


Next


Ja den skulle da gerne selv lave en fejl.
Avatar billede kimlarsen1978 Nybegynder
11. maj 2003 - 15:59 #2
Takker det prøver jeg lige
Ang. det med størrelsen så "æder" den alt
Avatar billede eagleeye Praktikant
11. maj 2003 - 16:02 #3
Fra deres hjemme side:
The SetMaxSize method expects two arguments: the maximum file size (in bytes) and a flag indicating whether a file exceeding the limit should be rejected with an error exception thrown (if set to True) or truncated (if set to False).

Som jeg læser det så vil den komme en fejl hvis det er true.
Avatar billede eagleeye Praktikant
11. maj 2003 - 16:02 #4
Prøv at kigge på dette eks:

<HTML>
<BODY>
<%
Set Upload = Server.CreateObject("Persits.Upload")
' Limit file size to 50000 bytes, throw an exception if file is larger
Upload.SetMaxSize 50000, True

' Intercept all exceptions to display user-friendly error
On Error Resume Next

' Perform upload
Upload.Save "c:\upload"

' 8 is the number of "File too large" exception
If Err.Number = 8 Then
  Response.Write "Your file is too large. Please try again."
Else
  If Err <> 0 Then
      Response.Write "An error occurred: " & Err.Description
  Else
      Response.Write "Success!"
  End If
End If
%>

</BODY>
</HTML>


taget herfra:
http://www.aspupload.com/manual_simple.html
Avatar billede kimlarsen1978 Nybegynder
11. maj 2003 - 16:16 #5
Den sluger simpelhen alt, min kode ser sådan her ud: (jeg er ikke kommet til det med GIF og JPG endnu, kun det med størrelsen)
-----------
  randomize
  n=int(10000000*rnd)

  Set Upload = Server.CreateObject("Persits.Upload")
  Count = Upload.SaveToMemory
  Upload.SetMaxSize 50000, True
  On Error Resume Next
  For Each File in Upload.Files

  If Err.Number = 8 Then
  session("fejl") = "Dit billede er for stort, det må MAX fylde 50 kb."
  response.redirect "add_add.asp"
  Else
    If Err <> 0 Then
    session("fejl") = "Der opstod en fejl, brug denne besked ved henvendelse: " & Err.Description
    response.redirect "add_add.asp"
    End If
  End If

  Dim FileName
  FileName = File.ExtractFileName
  File.SaveAs "d:\inetpub\wwwroot\Billeder\"& n & FileName
  Next
-------------
Avatar billede kimlarsen1978 Nybegynder
11. maj 2003 - 16:18 #6
Kan det være forbi jeg skal "exit" for-løkken?
Avatar billede eagleeye Praktikant
11. maj 2003 - 16:19 #7
Nej ikke hvis det er med redirect.

Måske du skal prøve at bytte rundt på disse to linje:

  Count = Upload.SaveToMemory
  Upload.SetMaxSize 50000, True

Så du sætte Max før du loader til memory:

  Upload.SetMaxSize 50000, True
  Count = Upload.SaveToMemory
Avatar billede kimlarsen1978 Nybegynder
11. maj 2003 - 16:29 #8
Nu fejler den, men den fanger ikke min if-sætning, den kommer bare med en error i browseren, jeg har forsøgt at flytte rundt på if-sætningen:
KODE:
----------
  randomize
  n=int(10000000*rnd)

  Set Upload = Server.CreateObject("Persits.Upload")
  Upload.SetMaxSize 50000, True
  Count = Upload.SaveToMemory
 
  If Err.Number = 8 Then
    session("fejl") = "Dit billede er for stort, det må MAX fylde 50 kb."
    response.redirect "add_add.asp"
  Else
    If Err <> 0 Then
    session("fejl") = "Der opstod en fejl, brug denne besked ved henvendelse: " & Err.Description
    response.redirect "add_add.asp"
    End If
  End If
 
  On Error Resume Next
  For Each File in Upload.Files

  If File.ImageType <> "GIF" and File.ImageType <> "JPG" Then
    session("fejl") = "Billede skal være i formatet GIF eller JPG"
    response.redirect "add_add.asp"
  End If
 
  Dim FileName
  FileName = File.ExtractFileName
  File.SaveAs "d:\inetpub\Billeder\"& n & FileName
   
  Next
----------
FEJL
----------
Size of file C:\Documents and Settings\Administrator\Skrivebord\side3_og_4.pdf exceeds the maximum allowed size of 50000 bytes.
----------
på denne linie:
----------
Count = Upload.SaveToMemory
----------
Avatar billede eagleeye Praktikant
11. maj 2003 - 16:31 #9
Så flyt

On Error Resume Next

ind mellem disse to:

  Upload.SetMaxSize 50000, True
  Count = Upload.SaveToMemory

Sådan:

  Upload.SetMaxSize 50000, True
  On Error Resume Next
  Count = Upload.SaveToMemory
Avatar billede kimlarsen1978 Nybegynder
11. maj 2003 - 16:32 #10
Jeg har flyttet "On Error Resume Next" nu virker det med størrelsen :-)
Avatar billede kimlarsen1978 Nybegynder
11. maj 2003 - 16:32 #11
2 hoveder én tanke *gg*
Avatar billede kimlarsen1978 Nybegynder
11. maj 2003 - 16:39 #12
Takker.
Det virker nu, også det med formatet, det skulle også lige flyttes udenfor For-løkken.

Jeg har et lille ekstra spørgsmål, hvis det er OK? Kan man tjekke om størrelsen på et billede er fx. 150*150?
Avatar billede eagleeye Praktikant
11. maj 2003 - 16:41 #13
Ja du kan på samme måde som med typen tjekke på størrelsen:


If File.ImageWidth > 150 Then
  Response.Write "Image width cannot exceed 150 pixels."
  Exit For
End If

If File.ImageHeight > 200 Then
  Response.Write "Image height cannot exceed 200 pixels."
  Exit For
End If
Avatar billede kimlarsen1978 Nybegynder
11. maj 2003 - 16:46 #14
Fedt nok
Tak for hjælpen
God Weekend
Avatar billede kimlarsen1978 Nybegynder
11. maj 2003 - 18:39 #15
Jeg forstyrer kige igen, det virker åbenbart ikke afligevel, uanset hvilken filtype jeg uploader om det er PDF eller JPG eller DOC så bliber FileType sat lig med JPG
KODE
-----------
  For Each File in Upload.Files
  Dim FileName
  FileName = File.ExtractFileName
 
  Dim FileType
  FileType = File.ImageType
  response.write FileType
 
  If FileType <> GIF AND FileType <> JPG AND FileType <> JPEG Then
    session("fejl") = "Billede skal være i formatet GIF eller JPG"
    response.write FileType
    'response.redirect "add_add.asp"
  End If
 
  File.SaveAs "d:\inetpub\Billeder\"& n & FileName
  Next
Avatar billede kimlarsen1978 Nybegynder
11. maj 2003 - 18:41 #16
Problemet er altså at uanset, hvad jeg uploader så retunerer File.ImageType JPG
Avatar billede eagleeye Praktikant
11. maj 2003 - 18:46 #17
Prøv at sætte " omrking GIF og JPG mm

If FileType <> "GIF" AND FileType <> "JPG" AND FileType <> "JPEG" Then
Avatar billede kimlarsen1978 Nybegynder
11. maj 2003 - 19:57 #18
Det har jeg prøvet, men det er ikke if-sætningen der er "forkert" det er File.ImageType der retunerer JPG så uanset hvad jeg uploader, så har FileType hele tiden værdien JPG
Avatar billede kimlarsen1978 Nybegynder
11. maj 2003 - 22:12 #19
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
Kurser inden for grundlæggende programmering

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