13. april 2005 - 14:43Der 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
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.
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
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.
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.
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.