Avatar billede zeusdk Nybegynder
14. december 2002 - 15:24 Der er 17 kommentarer og
2 løsninger

ASPUpload - sammenlign størrelser (kb)

Hej

Jeg har brug for et script, som sammenligner et submittet billedes størrelse (kb) med de billeder, som allerede er blevet submittet (og derved er blevet lagt ind på serveren). Hvis scriptet finder ud af, at størrelsen (kb) af det submittede billede er præcis lig med et billede, der allerede ligger på serveren, så skal den sige ”hov stop”.

Jeg bruger ASPUpload.
Avatar billede dk_akj Nybegynder
14. december 2002 - 16:57 #1
set FSO = server.createObject("Scripting.FileSystemObject")
Filepath = Server.MapPath("minfil.jpg")
if FSO.FileExists(Filepath) Then
  set file = FSO.GetFile(Filepath)
FileSize = file.Size
Avatar billede dk_akj Nybegynder
14. december 2002 - 17:00 #2
Øjeblik- det hele kom ikke med
Avatar billede dk_akj Nybegynder
14. december 2002 - 17:02 #3
Prøver igen :o)

Sådan finder du en fils størrelse med file system objectet


set FSO = server.createObject("Scripting.FileSystemObject")
Filepath = Server.MapPath("minfil.jpg")
if FSO.FileExists(Filepath) Then
  set file = FSO.GetFile(Filepath)
  FileSize = file.Size
end if



'Med asp upload kan du finde billedet størrelse sådan:
NewFileSize = Upload.TotalBytes


if FilseSize = NewFileSize then
    response.write "Hov Stop"
end if

//akj
Avatar billede zeusdk Nybegynder
14. december 2002 - 20:58 #4
Det ser jo godt ud

Scriptet mangler bare lige at returnere navnetfil på den fil, som allerde ligger på serveren (altså den fil der har den samme størrelse, som den fil der som lige er blevet uploadet).

Hvordan gøres det?
Avatar billede zeusdk Nybegynder
14. december 2002 - 21:14 #5
navnetfil = filnavnet
Avatar billede dk_akj Nybegynder
14. december 2002 - 21:29 #6
' find det nye billedes str.
NewFileSize = Upload.TotalBytes

' kald funktion der checker om filen findes
ret = checkfile(upload.file , newfilesize)

' udsriv resultat
response.write ret


Function checkfile(newfile,newsize)

    set FSO = server.createObject("Scripting.FileSystemObject")
    Filepath = Server.MapPath(newfile)
    if FSO.FileExists(Filepath) Then
        set file = FSO.GetFile(Filepath)
        FileSize = file.Size

        if FilseSize = NewFileSize then
            checkfile=filepath & " findes allerede, den er " & filesize & " bytes"
        else
            checkfile=filepath & " findes allerede, men den har ikke samme størrelse som den nye fil."
        end if
    else
        checkfile = "Filen findes ikke"

    end if
end function
Avatar billede zeusdk Nybegynder
14. december 2002 - 22:00 #7
Den siger "findes allerede, men den har ikke samme størrelse som den nye fil." Men det er ikke korrekt, fordi den har præcis den samme størrelse.

Er det fordi jeg kører med "Upload.OverwriteFiles = false" at den siger sådan eller skal fejlen findes et andet sted?
Avatar billede dk_akj Nybegynder
14. december 2002 - 22:20 #8
Prøv lige at check hvad den udskriver af størrelser.

' find det nye billedes str.
NewFileSize = Upload.TotalBytes

' kald funktion der checker om filen findes

response.write "ny str = " & newfilesize & "<br>"

ret = checkfile(upload.file , newfilesize)

' udsriv resultat
response.write ret


Function checkfile(newfile,newsize)

    set FSO = server.createObject("Scripting.FileSystemObject")
    Filepath = Server.MapPath(newfile)
    if FSO.FileExists(Filepath) Then
        set file = FSO.GetFile(Filepath)
        FileSize = file.Size


response.write "gl str = " & filesize & "<br>"

        if FilseSize = NewFileSize then
            checkfile=filepath & " findes allerede, den er " & filesize & " bytes"
        else
            checkfile=filepath & " findes allerede, men den har ikke samme størrelse som den nye fil."
        end if
    else
        checkfile = "Filen findes ikke"

    end if
end function
Avatar billede zeusdk Nybegynder
16. december 2002 - 19:55 #9
Den siger:

ny str = 2833
gl str = 1392
d:\home\selvetdk\www\grafik\artikler\!nlp_europe(4).gif findes allerede, men den har ikke samme størrelse som den nye fil.

(Parentesen skaber scriptet selv, så alle filnavne er unikke.)

Jeg har oploadet den samme fil flere gange og scriptet siger det samme hver gang, ovenstående. Jeg ved ikke hvor den får størrelsen "2833" fra, men den anden størrelse er korrekt, dvs. at det er den størrelse som nye oploadede fil har.
Avatar billede dk_akj Nybegynder
17. december 2002 - 08:19 #10
Jeg har lige testet på min pc, og der finder den rigtige størrelse på filerne.
Prøv lige dette script, den udskriver hvilke filer den checker.

Men først , prøv lige at rette denne linie:
if FilseSize = NewFileSize then
til:
if FileSize = NewFileSize then


' find det nye billedes str.
NewFileSize = Upload.TotalBytes

' kald funktion der checker om filen findes

ret = checkfile(upload.file , newfilesize)

' udsriv resultat
response.write ret


Function checkfile(newfile,newsize)

    response.write "nyt filnavn = " & newfile & "<br>"
    response.write "ny str = " & newfilesize & "<br>"

    set FSO = server.createObject("Scripting.FileSystemObject")
    Filepath = Server.MapPath(newfile)
    if FSO.FileExists(Filepath) Then
        set file = FSO.GetFile(Filepath)
    response.write "gl filnavn = " & filepath & "<br>"
        FileSize = file.Size


    response.write "gl str = " & filesize & "<br>"

        if FileSize = NewFileSize then
            checkfile=filepath & " findes allerede, den er " & filesize & " bytes"
        else
            checkfile=filepath & " findes allerede, men den har ikke samme størrelse som den nye fil."
        end if
    else
        checkfile = "Filen findes ikke"

    end if
end function


//akj
Avatar billede zeusdk Nybegynder
17. december 2002 - 20:55 #11
nyt filnavn = /grafik/artikler/!nlp_europe(1)(6).gif
ny str = 2834
gl filnavn = d:\home\selvetdk\www\grafik\artikler\!nlp_europe(1)(6).gif
gl str = 1392
d:\home\selvetdk\www\grafik\artikler\!nlp_europe(1)(6).gif findes allerede, men den har ikke samme størrelse som den nye fil.

_____________________________________________________


<%

'************************** Hovedfunktionen **************************************

if Request.ServerVariables("REQUEST_METHOD") = "POST" then

    Set Upload = Server.CreateObject("Persits.Upload.1")
    strImageDir="/grafik/artikler/"
    Upload.SetMaxSize 10000, True
    Upload.OverwriteFiles = false
   
    On Error Resume Next
    Count = Upload.Save(Server.MapPath(strImageDir))   

    For Each File in Upload.Files
        strNAVN = strImageDir & File.ExtractFileName
    Next
   
    If Err.Number = 8 Then
          sendBack("Billedet må ikke overstige en størrelse af 10 KB. Komprimer enten billedet og prøv igen eller vælg et allerede indsendt billede ved at klikke på 'Hent', som findes nedenstående.")
    'Else
        'If Err <> 0 Then
              'sendBack("Prøv igen - der opstod en teknisk fejl: " &  Err.Description & ".")
          'end if
    end if

    if Upload.Form("link2") = "" then

        If fileSizeCheck(strNAVN) then
            'find det nye billedes str.
            NewFileSize = Upload.TotalBytes

            ' kald funktion der checker om filen findes

            ret = checkfile(strNAVN , newfilesize)

            ' udsriv resultat
            response.write ret
            insertArticleInDatabase (strNAVN)
          End if
      End if
   
    if not Upload.Form("link2") = "" then
        strNAVN = Upload.Form("link2")

        if ifFileExists (strNAVN) then
            insertArticleInDatabase (strNAVN)
        end if
    end if
       
    'if strNAVN = "" then
        'sendBack("Linket er gået tabet - luk vinduet og forsøg igen.")
    'end if
'else
    'response.redirect("start.asp")
end if
   
'*************************** Underfunktionerne ***********************************

function sendBack (message)
   
    response.redirect "artikel1.asp?kategori=" & Upload.Form("kategori") & "&titel=" & Upload.Form("titel") & "&beskrivelse=" & Upload.Form("beskrivelse") & "&link=" & Upload.Form("link") & "&link1="& Upload.Form("link1") & "&link2=" & Upload.Form("link2") & "&datoPublikation=" & Upload.Form("datoPublikation") & "&message=" & message

end function

Function ifFileExists (strNAVN)

    Set FSO = CreateObject("Scripting.FileSystemObject")
    strNAVN2 = Server.MapPath(strNAVN)
    If FSO.FileExists(strNAVN2) Then
        ifFileExists = true
    else
        sendBack("Det angivede billede på Selvet blev ikke fundet.")
    end if
   
end function

function fileSizeCheck (strNAVN)
   
    Dim fso, f, filespec

    filespec = Server.Mappath(strNAVN)
    Set fso = CreateObject("Scripting.FileSystemObject")
    Set f = fso.GetFile(filespec)

    If f.Size = 0 then
       
        fileDelete(strNAVN)
        sendBack("Det angivede billede på din computer blev ikke fundet.")
    else
        'response.write "<br>størrelse: " & f.Size
        fileLengthCheck = true
    end if

end function

Function fileLengthCheck(strNAVN)

    Set objImg=Server.CreateObject("ImgSize.Check")
    objImg.FileName = Server.MapPath(strNAVN)
   
    If objImg.Width = 0 And objImg.Height = 0 then
        fileDelete(strNAVN)
        sendBack("Filformatet kunne ikke genkendes, måske fordi filen ender på .gif i stedet for .jpg eller omvendt. Omdøbe filens efternavn til det korrekte filformat og prøv igen.")
    else
        If objImg.Width = 80 And objImg.Height = 100 Then
              fileLengthCheck = true
          Else
              fileDelete(strNAVN)
            sendBack("Den tilladte billedbredde er 80 pixels, og den tilladte billedhøjde er 100 pixels. Dit billede har en højde af " & objImg.Height & " pixels og en bredde af " & objImg.Width & " pixels.")
        End If
    end if
   
end function

function insertArticleInDatabase (strNAVN)

    On error resume next
   
    Set myConn=Server.CreateObject("ADODB.Connection")
    myConn.Open ("PROVIDER=Microsoft.Jet.OLEDB.4.0;DATA SOURCE="+server.Mappath("/db/selvet.mdb"))
   
    strSQL1 = "Select Max(CInt(url_samle)) AS MyUrlSamle from Search WHERE isNumeric(url_samle)"
    set rs1 = myConn.execute(strSQL1)
    taeller = rs1("MyUrlSamle") + 1
    grafik = "<IMG SRC=" & strNAVN & " BORDER=1 width=80 height=100 ALIGN=LEFT VALIGN=TOP>"
    samle = "<A CLASS=Link2 HREF=/dbsite/default.asp?id=58&samle=" & taeller & "&type=artikel_web>"
    if Upload.Form("link") = "" then
        link = "fejl"
    else
        link = Upload.Form("link")
    end if

    strSQL2 = "INSERT INTO search (url_link, overskrift, url_title, hovedpost_samle, url_samle, artikeltype, grafik, linkType, url_hovedgruppe, url_undergruppe, url_description, datopublish, url_datoopret, url_sprog, url_prioritet, link_samle) VALUES ('" & link & "','" & Upload.Form("titel") & "','" & Upload.Form("titel") & "'," & taeller & ", " & taeller & ", 'artikel_web' ,'" & grafik & "','" & Upload.Form("linkType") & "', 'artikler', '" & Upload.Form("kategori") & "', '" & Upload.Form("beskrivelse") & "', '" & Upload.Form("datoPublikation") & "', #" & Date() & "#, '" & Upload.Form("sprog") & "', 'aab', '" & samle & "')"
    set rs2 = myConn.execute(strSQL2)
     
    myConn.close
   
      If (myConn.Errors.Count > 0) Then
        For Each Error In myConn.Errors
              ErrorCode = vbcrlf & "Fejlnummer : " & Error.Number & vbcrlf & "Fejlbeskrivelse: " & Error.Description & vbcrlf & "Fejlkilde: " & Error.Source & vbcrlf & "Indfoedt fejl: " & Error.NativeError & vbcrlf & "SQL fejlkode: " & Error.SQLState & vbcrlf & "SQL streng: " & strSQL2
        Next
    else
        ErrorCode = "Ingen fejl"
    End If


    Set JMail          = Server.CreateObject("JMail.SMTPMail")
    JMail.ServerAddress = "websmtp.selvet.dk"
      JMail.Sender        = "admin@selvet.dk"
      JMail.Subject      = "Selvet.dk - " & Upload.Form("titel") & " (" & Upload.Form("linkType") & ")"
      JMail.AddRecipient       "admin@selvet.dk"
      JMail.Priority      = 3
      JMail.AddHeader      "Originating-IP", Request.ServerVariables("REMOTE_ADDR")
      JMail.Body             = "Til Selvets redaktør" & vbcrlf & vbcrlf & "Navn: " & Session("navn") & vbcrlf & "Email adresse: " & Session("email") & vbcrlf & "Titel: " & Upload.Form("titel") & vbcrlf & "Kategori: " &  Upload.Form("kategori") & vbcrlf & "Sprog: " & Upload.Form("sprog") & vbcrlf & "Beskrivelse: " & Upload.Form("beskrivelse") & vbcrlf & "Forside-henvisnig: " & Upload.Form("datoPublikation") & vbcrlf & "Oprettelse: " & date() & vbcrlf & "Artikelnr.: " & taeller & vbcrlf &"Link: " & Upload.Form("link") & vbcrlf & "Grafik: " & grafik & vbcrlf & "Samle: "& samle & vbcrlf & ErrorCode
      JMail.Execute
      Set JMail = Nothing
         
    If myConn.Errors.Count > 0 Then
        response.write "<script>alert('Din artikel er ikke blevet oprettet, da der opstod en fejl. Redaktøren vil automatisk blive underrettet herom, så fejlen kan blive lokaliseret.');</script>"
    End If

end function

Function fileDelete(strNAVN)
    Set fso = CreateObject("Scripting.FileSystemObject")
    On error resume next
    fso.DeleteFile(Server.MapPath(strNAVN))
    Set fso = Nothing
End Function

Function checkfile(newfile,newsize)

    response.write "nyt filnavn = " & newfile & "<br>"
    response.write "ny str = " & newfilesize & "<br>"

    set FSO = server.createObject("Scripting.FileSystemObject")
    Filepath = Server.MapPath(newfile)
    if FSO.FileExists(Filepath) Then
        set file = FSO.GetFile(Filepath)
    response.write "gl filnavn = " & filepath & "<br>"
        FileSize = file.Size


    response.write "gl str = " & filesize & "<br>"

        if FileSize = NewFileSize then
            checkfile=filepath & " findes allerede, den er " & filesize & " bytes"
        else
            checkfile=filepath & " findes allerede, men den har ikke samme størrelse som den nye fil."
        end if
    else
        checkfile = "Filen findes ikke"

    end if
end function
%>
Avatar billede dk_akj Nybegynder
18. december 2002 - 07:39 #12
Ahhh, prøv lige at rette:
Function checkfile(newfile,newsize)
til:
Function checkfile(newfile,newfilesize)

' arg hed filesize, i funktionen henvises til newfilesize.

//akj
Avatar billede zeusdk Nybegynder
18. december 2002 - 19:37 #13
Samme fejl:

nyt filnavn = /grafik/artikler/!nlp_europe(1)(7).gif
ny str = 2827
gl filnavn = d:\home\selvetdk\www\grafik\artikler\!nlp_europe(1)(7).gif
gl str = 1392
d:\home\selvetdk\www\grafik\artikler\!nlp_europe(1)(7).gif findes allerede, men den har ikke samme størrelse som den nye fil.
Avatar billede dk_akj Nybegynder
19. december 2002 - 07:41 #14
Det var da s.....

Prøv lige at køre dette script
<%
set FSO = server.createObject("Scripting.FileSystemObject")
Filepath = Server.MapPath("d:\home\selvetdk\www\grafik\artikler\!nlp_europe(1)(7).gif
")
if FSO.FileExists(Filepath) Then
  set file = FSO.GetFile(Filepath)
  FileSize = file.Size
end if

response.write filesize

%>


//akj
Avatar billede zeusdk Nybegynder
22. december 2002 - 22:27 #15
Det er hermed godt, men den udskriver intet (og koden bliver kørt).
Avatar billede zeusdk Nybegynder
22. december 2002 - 22:34 #16
Jeg kan også fortælle, at "if FSO.FileExists(Filepath)" ikke bliver sand, hvilket vil sige, at filen ikke eksisterer... men det gør den nu alligevel, hvilket man selv kan se ovenstående ved udskrivningen af dets placering.
Avatar billede dk_akj Nybegynder
23. december 2002 - 07:13 #17
Hvad sker der hvis du paster flg. ind i Start - RUN og trykker ok.
d:\home\selvetdk\www\grafik\artikler\!nlp_europe(1)(7).gif
Avatar billede zeusdk Nybegynder
23. december 2002 - 10:53 #18
Det kan jeg ikke, fordi filen ligger ikke på min computer - den ligger på et webhotel. Jeg skal derfor skrive:
http://selvet.dk/grafik/artikler/!nlp_europe(1)(7).gif
Avatar billede zeusdk Nybegynder
24. december 2002 - 15:33 #19
Jeg har brug for et hurtigt svar, så jeg bliver nødt til at lukke nu. Jeg takker 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
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