Hej!
Vilket trevligt forum! :bire Håller precis på med mitt ex-jobb nu och all hjälp är välkommen. Iaf så har jag två problem just nu angående bilduppladdning som är en del av mitt projekt...
Det första är när en bild ska sparas i min Access-databas. Allt fungerar men jag vill att bilden ska skalas ner i lämplig storlek innan den sparas i databasen. Nu ser koden ut så här:
*'--------ladda upp bilden
'---- Existerar bilden ?
If (txtFilnamn.PostedFile Is Nothing) Or _
txtFilnamn.PostedFile.FileName = "" Then
'---- Nej
Else
'---- Ja
'----läs in bilden till arbetsminnet 1 kB i taget
count = imageStream.Read(imageBuffer, 0, imageBuffer.Length)
Do While count > 0
imageMemory.Write(imageBuffer, 0, imageBuffer.Length)
count = imageStream.Read(imageBuffer, 0, imageBuffer.Length)
antal += 1
Loop
'--------- Lagra bilden i databasen
'--------- Skapa förbindelse till databasen
conWWWButik = New OleDbConnection(Application("conString"))
'--------- Öppna förbindelse till databasen
conWWWButik.Open()
'varunr = txtVarunr.Text
SQL = "UPDATE Varureg SET Varubild= @bufferStream" \_
& " WHERE Bildnr=@maxbildnr;"
' & " WHERE Varunr='" & varunr & "';"
cmdSavePicture = New OleDbCommand(SQL, conWWWButik)
cmdSavePicture.Parameters.Add("@bufferStream", \_
imageMemory.GetBuffer)
cmdSavePicture.Parameters.Add("@maxbildnr", maxbildnr)
cmdSavePicture.ExecuteNonQuery()*
Problem två.
När en bild hämtas från databasen så sparas den på servern för att kunna visas. Som det är nu så tas inte den temporära bilden på servern inte bort utan ligger kvar och det blir dubbellagring. Hur skriver jag för att ta bort kopian på servern?
Nuvarande kod:
*SQL4 = "SELECT Varubild FROM Varureg WHERE (Bildnr=" & Bildnr & ");"
cmdLoadPicture = New OleDbCommand(SQL4, conWWWButik)
drImage = cmdLoadPicture.ExecuteReader \_
(CommandBehavior.SequentialAccess)
'--------- Finns varan i databasen ?
If drImage.Read() Then
'---- Ja, finns varubild till varan i databasen ?
If (Not drImage.IsDBNull(0)) Then
'---- Ja
'----Läs in bilden till en vektor av Bytes
drImage.GetBytes(0, 0, imageBytes, \_
0, maxImageSize)
'---- Lägg in vektorn i en "minnesström"
imageMemory = New MemoryStream(imageBytes, 0, \_
imageBytes.Length, True, False)
'---- Omvandla "minnesströmmen" till en bild
varubild = Image.FromStream(imageMemory)
'---- Spara bilden på servern och koppla den till
'---- en image-kontroll
bild = ("bilder/" & Bildnr & ".jpg")
varubild.Save(Server.MapPath(bild))
imgVaruBild.ImageUrl = bild
If varubild.Width \< 400 Then
imgVaruBild.Width = varubild.Width
Else
imgVaruBild.Width = 400
End If
imageMemory = Nothing*
Hoppas någon kan hjälpa mig... :D