Hej! Hej, det har fömodligen att göra med att du har autowireupevents=true på sidan. Då kan vissa events utlösas två gånger. Testa att sätta en breakpoint på databasanropet. Då kan du se vad som händer. Att rutinen körs 2 gånger kan du säkert avhjälpa med att köra "if ispostback".. Att du inte får tag på filnamnet är underligt, men börja längst upp att kalla på det och tilldela det till en variabel. Ser att du använder filename flera gånger, kanske också är så att du måste iterera filnamnet? Har du debuggat? Jag får tag i filnamnet på orginal filen, alltså filen jag laddar upp men inte på thumnailen. Nu har jag installerat MySQL och debuggat, koden körs 2 gånger (?) och filnamnet på thumbnailen blir nu sökvägen till där den sparas istället för själva filnamnet. Har även provat med "Not IsPostBack" men då körs inte koden alls. Ser ut så här nu: kom på hur man gjorde med autoeventswireup, samma resultat oavset om den var satt i "true" eller "false"Dubbla rader i DB
Jag har en bilduppladdnings funktion som inte gör som jag vill. Det blir dubbla rader i databasen samt att filnamnet på thumben inte följer med, har inte lyckats klura ut hur jag plockar fram det.
Vad är galet?
/Tomas
Protected Sub PictureUploadButton_Click(ByVal sender As Object, ByVal e As EventArgs) Handles PictureUploadButton.Click
If PictureUpload.HasFile Then
Dim image As System.Drawing.Image = System.Drawing.Image.FromStream(PictureUpload.PostedFile.InputStream)
' save orginal image
Dim fileName As String = Path.Combine(Server.MapPath("~/Uploads"), PictureUpload.FileName)
If File.Exists(fileName) Then
File.Delete(fileName)
End If
image.Save(fileName)
Dim uplImg As String
uplImg = PictureUpload.FileName
' create thumbnail
Dim w As Single = image.PhysicalDimension.Width
Dim h As Single = image.PhysicalDimension.Height
Dim s As Single = Math.Max(h, w) ' pick the larger side
Dim r As Single = IIf(s <= 64, 1.0, 64 / s) ' max width or height is 64 pixels
' scale the dimensions
w *= r
h *= r
Dim thumb As System.Drawing.Image = image.GetThumbnailImage(w, h, AddressOf DoNothing, 0)
' save the thumbnail
fileName = Path.Combine( _
Server.MapPath("~/Uploads"), _
String.Format("{0}_thm{1}", _
Path.GetFileNameWithoutExtension(PictureUpload.FileName), _
Path.GetExtension(PictureUpload.FileName) _
) _
)
If File.Exists(fileName) Then
File.Delete(fileName)
End If
thumb.Save(fileName)
Dim uplImgThmb As String
uplImgThmb = PictureUpload.FileName
' Spara till DB
Dim strConnectionString As String
Dim strQuery As String
Dim MyConnection As OdbcConnection
Dim myCommand As OdbcCommand
strConnectionString = "DRIVER={MySQL ODBC 3.51 Driver}; SERVER=****; DATABASE=*****; UID=*****; PASSWORD=*****; OPTION=3"
MyConnection = New OdbcConnection(strConnectionString)
MyConnection.Open()
strQuery = "INSERT INTO tbl_uplImg(imgName, imgThumb) VALUES (?, ?)"
myCommand = New OdbcCommand(strQuery, MyConnection)
myCommand.Parameters.AddWithValue("?", uplImg)
myCommand.Parameters.AddWithValue("?", uplImgThmb)
myCommand.ExecuteNonQuery()
MyConnection.Close()
Else
lblUpload.Text = ("Ingen bild uppladdad!")
End If
End Sub
Sv: Dubbla rader i DB
Vid behov sätt autowireupevents=falseSv: Dubbla rader i DB
Sv:Dubbla rader i DB
Nix, jag har ej debuggat, utvecklar i visual web dev. 2005 och har inte MySql lokalt.Sv: Dubbla rader i DB
Protected Sub PictureUploadButton_Click(ByVal sender As Object, ByVal e As EventArgs) Handles PictureUploadButton.Click
'If Not IsPostBack Then
If PictureUpload.HasFile Then
' notice we can load the image directly from the data being posted.
' there is no need to save it to the filesystem first.
Dim image As System.Drawing.Image = System.Drawing.Image.FromStream(PictureUpload.PostedFile.InputStream)
' save orginal image
Dim fileName As String = Path.Combine(Server.MapPath("~/Uploads"), PictureUpload.FileName)
If File.Exists(fileName) Then
File.Delete(fileName)
End If
image.Save(fileName)
Dim uplImg As String
uplImg = PictureUpload.FileName
' create thumbnail
Dim w As Single = image.PhysicalDimension.Width
Dim h As Single = image.PhysicalDimension.Height
Dim s As Single = Math.Max(h, w) ' pick the larger side
Dim r As Single = IIf(s <= 64, 1.0, 64 / s) ' max width or height is 64 pixels
' scale the dimensions
w *= r
h *= r
Dim thumb As System.Drawing.Image = image.GetThumbnailImage(w, h, AddressOf DoNothing, 0)
' save the thumbnail
fileName = Path.Combine( _
Server.MapPath("~/Uploads"), _
String.Format("{0}_thm{1}", _
Path.GetFileNameWithoutExtension(PictureUpload.FileName), _
Path.GetExtension(PictureUpload.FileName) _
) _
)
If File.Exists(fileName) Then
File.Delete(fileName)
End If
Dim uplImgThmb As String
uplImgThmb = fileName
thumb.Save(fileName)
' Spara till DB
Dim strConnectionString As String
Dim strQuery As String
Dim MyConnection As OdbcConnection
Dim myCommand As OdbcCommand
strConnectionString = "DRIVER={MySQL ODBC 3.51 Driver}; SERVER=127.0.0.1; DATABASE=*****; UID=*****; PASSWORD=*****; OPTION=3"
MyConnection = New OdbcConnection(strConnectionString)
MyConnection.Open()
strQuery = "INSERT INTO tbl_uplImg(imgName, imgThumb) VALUES (?, ?)"
myCommand = New OdbcCommand(strQuery, MyConnection)
myCommand.Parameters.AddWithValue("?", uplImg)
myCommand.Parameters.AddWithValue("?", uplImgThmb)
myCommand.ExecuteNonQuery()
MyConnection.Close()
'Response.Redirect("read.aspx")
Else
lblUpload.Text = ("Ingen bild uppladdad!")
End If
'End If
End Sub
Sv:Dubbla rader i DB
*suck*