webForumDet fria alternativet
Logga in / Bli medlem

Problem med bilduppladdning

.NET

0 svar · 323 visningar · startad av wiggo

Medlem sedan mars 200615 inlägg
Trådstart#1

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

258 ms totalt · 4 externa anrop · v20260731065814-full.51f67c91
124 ms — deklarationer (db)
0 ms — hämta statistik (cache)
130 ms — hämta tråd, inlägg och bilagor (db)
124 ms — ändringar (db)