webForumDet fria alternativet

Problem med bilduppladdning

.NETur .NET

0 svar · 321 visningar · startad av wiggo

wiggoMedlem sedan mars 200615 inlägg
#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

132 ms totalt · 3 externa anrop · v20260731065814-full.29ac60f6
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
128 ms — hämta tråd, inlägg och bilagor (db)