Avatar billede tzag_dk Nybegynder
13. april 2005 - 14:43 Der er 18 kommentarer og
2 løsninger

Problemer med aspUpload & File.Binary

Hej

Jeg får denne her fejl når jeg forsøger at uploade en fil til databasen:

Microsoft VBScript runtime error '800a000d'

Type mismatch

/addfiles.asp, line 30


Kan ikke se hvad der er galt, her er koden:
Set Upload = Server.CreateObject("Persits.Upload")
' we use memory uploads, so we must limit file size
Upload.SetMaxSize 100000, True

' Save to memory. Path parameter is omitted
Count = Upload.Save

' Obtain file object
Set File = Upload.Files("picture")

If Not File Is Nothing Then

  ' Optional: check whether this file already exists using MD5 hash
 
  SQL = "SELECT * from users WHERE hash='" & File.MD5Hash & "'"
  Set rs = Conn.execute(SQL)
  If Not rs.EOF Then
    Conn.close
      Response.Redirect("/upload.asp?profilePicture=true&error=1")
      Response.End
  End If


SQL1 = "UPDATE users SET picture = '"&File.Binary&"', filename = '"&File.FileName&"', filesize = '"&File.Size&"', hash = '"&File.MD5Hash&"' WHERE id ='"&session("id")&"';"
'response.Write(SQL1)
Conn.Execute(SQL1)

    Conn.close
  Response.Redirect("/upload.asp?profilePicture=true")
Else
    Conn.close
  Response.Redirect("/upload.asp?profilePicture=true&error=2")
End If


Linje 30:
SQL1 = "UPDATE users SET picture = '"&File.Binary&"', filename = '"&File.FileName&"', filesize = '"&File.Size&"', hash = '"&File.MD5Hash&"' WHERE id ='"&session("id")&"';"


Håber at der er nogle der kan hjælpe.
På forhånd tak :o)
// Rene
Avatar billede busschou Praktikant
13. april 2005 - 14:51 #1
prøv fjerne plingerne omkring filesize
Avatar billede busschou Praktikant
13. april 2005 - 14:51 #2
alle felter som er tal i databasen skal ikke have plinger om
Avatar billede busschou Praktikant
13. april 2005 - 14:52 #3
hvad siger sql når du udskriver den?
Avatar billede busschou Praktikant
13. april 2005 - 14:54 #4
SQL1 = "UPDATE users SET picture = '"&File.Binary&"', filename = '"&File.FileName&"', filesize = "&File.Size&", hash = '"&File.MD5Hash&"' WHERE id = "&session("id")
Avatar billede tzag_dk Nybegynder
13. april 2005 - 15:05 #5
Jeg kan ikke udskrive sql´en, den laver bare den samme fejl.
Men jeg har fundet ud af at hvis jeg skriver 'test' i setdet for '"&File.Binary&"' laver den ikke fejl. Så det må have noget at gøre med File.Binary.
Avatar billede busschou Praktikant
13. april 2005 - 15:11 #6
ok så ved jeg det ikke ...andet end hvis File.Binary er binær...hmm kan det så sættes i en tekst streng?
Avatar billede tzag_dk Nybegynder
13. april 2005 - 15:15 #7
Jeg tror ikke at det kan sættes som en tekst streng, da data tyben skal være blob :(
Avatar billede busschou Praktikant
13. april 2005 - 15:22 #8
Altså
1) Hvis den laver fejl i linjen hvor du laver SQL1 så er det fordi File.Binary ikke er tekst og ikke kan komme med i strengen
2) Hvis den laver fejl i din conn.execute linjen under. Så er det fordi felterne ikke stemmer overens i databasen med det i SQL1
Avatar billede tzag_dk Nybegynder
13. april 2005 - 15:32 #9
Det må være nr 1 den er galt med.
Men jeg kan ikke se hvorfor at det ikke skulle virke. Det skulle kunne lade sig gøre at gemme data i databasen med et blob felt mens at man gemmer det som Binary.
Avatar billede busschou Praktikant
13. april 2005 - 15:35 #10
sker der noget hvis du blot gemmer File?
Avatar billede tzag_dk Nybegynder
13. april 2005 - 15:38 #11
Så får jeg denne fejl:
Microsoft VBScript runtime error '800a01b6'

Object doesn't support this property or method: 'File'

/addfiles.asp, line 30
Avatar billede busschou Praktikant
13. april 2005 - 15:42 #12
jeg må melde pas desværre :o(
Avatar billede tzag_dk Nybegynder
13. april 2005 - 15:52 #13
Det er der ikke noget at gøre ved. Men mange tak for hjælpen!
Forsat god dag :o)
Avatar billede netro Nybegynder
13. april 2005 - 17:35 #14
Er dit billedfelt af datatypen OLE-Objekt (hvis Access)?
Avatar billede tzag_dk Nybegynder
13. april 2005 - 17:51 #15
Det er MySQL og datatypen er BLOB
Avatar billede netro Nybegynder
13. april 2005 - 23:09 #16
Godt, så gør du således:

SQL1 = "UPDATE users SET picture = LOAD_FILE('/tmp/picture.jpg'), filename = '"&File.FileName&"', filesize = '"&File.Size&"', hash = '"&File.MD5Hash&"' WHERE id ='"&session("id")&"';"

Du skal altså først gemme billedet, og så gemme det binært i tabellen. Derefter kan du bare slette det fra din folder.

Du bør i øvrigt være opmærksom på, at det sløver basen at indeholde binære objekter, da dens størrelsen hurtigt bliver temmelig stor. Det er værst med Access, men jeg har selv lavet tests med MySQL, der viser tegn på nedsat performance.
Avatar billede netro Nybegynder
13. april 2005 - 23:11 #17
MySQL har en indbygget hash-funktion, hvis du nogensinde skulle få brug for en sådan: MD5('sgszgsgrgs')
Avatar billede tzag_dk Nybegynder
14. april 2005 - 11:01 #18
Hej,

Jeg valgte at gemme filen på serverne og ikke i databasen. Det virker fint nu.
Ligger I et svar, så skal I få nogle point :o)
Tak for hjælpen
Avatar billede busschou Praktikant
14. april 2005 - 11:30 #19
jamen her er et svar...:o)
Avatar billede netro Nybegynder
14. april 2005 - 11:34 #20
God idé ;)
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