Fetstil Fetstil Kursiv Understrykning linje färgläggning tabellverk Punktlista Nummerlista Vänster Centrerat högerställt Utfyllt Länk Bild htmlmode
  • Forum & Blog
    • Forum - översikt
      • .Net
        • asp.net generellt
        • c#
        • vb.net
        • f#
        • silverlight
        • microsoft surface
        • visual studio .net
      • databaser
        • sql-server
        • databaser
        • access
        • mysql
      • mjukvara klient
        • datorer och komponenter
        • nätverk, lan/wan
        • operativsystem
        • programvaror
        • säkerhet, inställningar
        • windows server
        • allmänt
        • crystal reports
        • exchange/outlook
        • microsoft office
      • mjukvara server
        • active directory
        • biztalk
        • exchange
        • linux
        • sharepoint
        • webbservers
        • sql server
      • appar (win/mobil)
      • programspråk
        • c++
        • delphi
        • java
        • quick basic
        • visual basic
      • scripting
        • asp 3.0
        • flash actionscript
        • html css
        • javascript
        • php
        • regular expresssion
        • xml
      • spel och grafik
        • DirectX
        • Spel och grafik
      • ledning
        • Arkitektur
        • Systemutveckling
        • krav och test
        • projektledning
        • ledningsfrågor
      • vb-sektioner
        • activeX
        • windows api
        • elektronik
        • internet
        • komponenter
        • nätverk
        • operativsystem
      • övriga forum
        • arbete karriär
        • erbjuda uppdrag och tjänster
        • juridiska frågor
        • köp och sälj
        • matematik och fysik
        • intern information
        • skrivklåda
        • webb-operatörer
    • Posta inlägg i forumet
    • Chatta med andra
  • Konto
    • Medlemssida
    • Byta lösenord
    • Bli bonsumedlem
    • iMail
  • Material
    • Tips & tricks
    • Artiklar
    • Programarkiv
  • JOBB
  • Student
    • Studentlicenser
  • KONTAKT
    • Om pellesoft
    • Grundare
    • Kontakta oss
    • Annonsering
    • Partners
    • Felanmälan
  • Logga in

Hem / Forum översikt / inlägg

Posta nytt inlägg


Ladda upp filer till SQL

Postades av 2014-02-11 20:42:16 - Per Siljehamn, i forum vb.net, Tråden har 1 Kommentarer och lästs av 2579 personer

Jag behöver koden (VB) + SQL-frågan för att kunna ladda upp filer och bilder till SQL.

Jag behöver även kod för att ta fram mindre storlek på bild än originalet


/Per


Svara

Sv: Ladda upp filer till SQL

Postades av 2014-02-12 09:42:36 - Pelle Johansson

Hej, det är inte så vanligt att någon skriver ett helt program för att lösa liknadne problem och postar, men däremot hjälper vi gärna till att försöka rätta till eventuella fel eller peka i rätt riktning.

Det du behöver arbeta med när det handlar om att ladda upp filer i sql-servern var tidigare något som hette adox- men jag gissar att du nu i stället skall arbeta med BLOB's dvs big large objects. Så första momentet är att skapa en kolumn i din tabell med det formatet. Nästa moment är att bygga e uppladdningsrutin och i asp.net finns en färdig kontroll för detta om det är en webbsida. Den kontrollen kan även fånga filstorleken. När det gäller att ändra formatet så heter detta resample där man antingen anger x eller y axeln för att få till rätt storlek. Även där finner du säkert färdigt paketerad information för detta. Det bygger på 2 moment, ladda upp bilden till servern, skapa en ny bild med nytt format och slutligen radera den gamla.

Pellesoft har ett CM-system med den funktionen och min kod (bara som exempel) ser ut som följer och du troligen inte kommer kunna köra då det bara är ett urklipp (men kanske ger en hint om hur man kan göra) :

 Private Sub btnAddImage_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnAddImage.Click

        Dim ImageFolder As String = ""
        Dim myPath As String

        Dim UploadImage As HttpPostedFile = Request.Files.Get(0)
        Dim id As String = Request.QueryString("id")

        Dim filename As String
        Dim filesize As Integer
        Dim contenttype As String

        filesize = System.Web.HttpContext.Current.Request.Files(0).ContentLength
        contenttype = System.Web.HttpContext.Current.Request.Files(0).ContentType

        Dim filestoupload As String = System.Configuration.ConfigurationManager.AppSettings("filestoupload")
        Dim filestoresample As String = System.Configuration.ConfigurationManager.AppSettings("filestoresample")
        Dim filesuffix As String = System.Configuration.ConfigurationManager.AppSettings("filesuffix")

        ' tar ut filnamn utan sökväg
        filename = System.IO.Path.GetFileName(UploadImage.FileName)

        ' Är det rätt filtyper vi tillåter?
        If InStr(filestoupload, contenttype, CompareMethod.Binary) > 0 Then

            ' Hämta relativ sökväg till vår katalog och gör om till absolut sökväg
            myPath = pellesoft.Site.GetImageUploadPath & "\" & pellesoft.User.CurrentUserId            ' Server.MapPath("/")

            If lstFolder.SelectedValue <> "standard" Then
                myPath += "\" + lstFolder.SelectedValue
            End If

            'Try
            ' sparar bilden
            UploadImage.SaveAs(myPath & ImageFolder & "\" & filename)

        Else
            ' inte godkänt filformat
            ' MyError.Text = "Detta är inte ett godkänt filformat på fil(er).<br>"
            'lblFileInsert.Text = "Bild att infoga (Ej godkänd bildtyp)"
            ClientScript.RegisterStartupScript(Me.GetType(), "alert", "<script language=""javascript"">alert('Denna filtyp är inte godkänd att ladda upp. Du kan endast ladda upp filer av typerna " & filesuffix & ".');</script>")

            Exit Sub

            'Response.Write("Inte godkänt filformat")
        End If

        ' bekräftelse att filen är uppladdad
        ClientScript.RegisterStartupScript(Me.GetType(), "alert", "<script language=""javascript"">alert('Filen är nu uppladdad.');</script>")

        ' // resample
        Dim _Width As Integer = CType(GetFormField("txtnewwidth"), Integer)
        Dim _Height As Integer = CType(GetFormField("txtnewheight"), Integer)

        ' vill vi köra resample?
        If _Width > 0 Or _Height > 0 Then

            If InStr(filestoresample, contenttype, CompareMethod.Binary) > 0 Then

                ' om bilden är av typen gif och är transparent så klarar inte rutinen av att göra
                ' thumbnail och smäller. Finns det någon kontroll för bildens egenskaper om hur
                ' den är skapad tro?

                ' gör även en thumbnail av den
                'Dim thumbNailImage As System.Drawing.Image

                'thumbNailImage = System.Drawing.Image.FromFile(ImageFolder & "\" & filename)
                ' *** ny variant - denna låser inte filen som FromFile gör
                'http://oldlook.experts-exchange.com:8080/Programming/Programming_Languages/Dot_Net/Q_20712914.html


                ' om filen redan finns döper vi först om den - för vi kan inte spara den nya filen över den gamla
                ' utan att få ett GDI+ error
                Dim tmpfilename As String = pellesoft.Site.GetImageUploadPath & "\" & pellesoft.User.CurrentUserId & "\" & Session.SessionID & Right(filename, 4)
                Try
                    Rename(pellesoft.Site.GetImageUploadPath & "\" & pellesoft.User.CurrentUserId & "\" & filename, tmpfilename)
                Catch er As Exception
                    ' ignorera ev fel
                End Try

                ' hämtar in bilden som en stream
                Dim fstream As New System.IO.FileStream(tmpfilename, System.IO.FileMode.Open)
                Dim FullSizeImage As System.Drawing.Image = Image.FromStream(fstream)
                fstream.Close()

                ' hämtar storleken
                Dim imageHeight As Integer = FullSizeImage.Height
                Dim imageWidth As Integer = FullSizeImage.Width

                If _Height = 0 Then _Height = imageHeight
                If _Width = 0 Then _Width = imageWidth

                ' hämtar in vad kunden önskat
                If imageWidth > _Width And _Width > 0 Then
                    _Height = CType(imageHeight * (_Width / imageWidth), Integer)
                    '_Width = txtwidth.Text
                Else
                    _Width = imageWidth
                End If

                If imageHeight > _Height Then
                    _Width = CType(imageWidth * (_Height / imageHeight), Integer)
                    '_Height = txtheight.Text
                Else
                    _Height = imageHeight
                End If

                ' genererar vår nya bild (utan gdi++) vilket medför att vi inte får problem med att ändra storlekarna
                ' på bilder som är transparenta.

                Dim loBMP As New Bitmap(tmpfilename)

                Dim bmpOut As New Bitmap(_Width, _Height)
                Dim g As Graphics = Graphics.FromImage(bmpOut)

                g.FillRectangle(Brushes.White, 0, 0, _Width, _Height)
                g.DrawImage(loBMP, 0, 0, _Width, _Height)


                bmpOut.Save(pellesoft.Site.GetImageUploadPath & "\" & pellesoft.User.CurrentUserId & "\" & filename, System.Drawing.Imaging.ImageFormat.Jpeg)

                loBMP.Dispose()
                bmpOut.Dispose()

                ' -- använder gdi+

                'Dim oImg As System.Drawing.Image = FullSizeImage
                'Dim oThumbNail As System.Drawing.Image = New Bitmap(_Width, _Height, oImg.PixelFormat)

                'Dim oGraphic As Graphics = Graphics.FromImage(oThumbNail)

                'oGraphic.CompositingQuality = CompositingQuality.HighQuality
                'oGraphic.SmoothingMode = SmoothingMode.HighQuality
                'oGraphic.InterpolationMode = InterpolationMode.HighQualityBicubic

                'Dim oRectangle As Rectangle = New Rectangle(0, 0, _Width, _Height)

                'oGraphic.DrawImage(oImg, oRectangle)
                'oThumbNail.Save(pellesoft.Site.GetImageUploadPath & "\" & pellesoft.User.CurrentUserId & "\" & filename, ImageFormat.Jpeg)

                'oImg.Dispose()

                ' radera tempfilen
                Try
                    Kill(tmpfilename)
                Catch ex As Exception
                End Try

            Else
                ' inte godkänt filformat
            End If

        End If

        Response.Redirect(Request.Url.ToString)

    End Sub

    Function GetImageSize(ByVal strfilename As String) As String

        ' får inte vara tomt
        If strfilename = "" Then Return ""
        If InStr(strfilename, "_vti") > 0 Then Return ""
        If InStr(strfilename, ".swf") > 0 Then Return ""
        If InStr(strfilename, ".fla") > 0 Then Return ""
        If InStr(strfilename, ".flw") > 0 Then Return ""
        If InStr(strfilename, ".pdf") > 0 Then Return ""

        Dim filelength, shtWidth, shtHeight As Integer

        Dim fs As FileStream = New FileStream(strfilename, FileMode.Open, FileAccess.Read, FileShare.Read)

        If Not IsNothing(fs) Then
            Try
                Dim photo As Image = Image.FromStream(fs, True)

                filelength = Convert.ToInt32(fs.Length)
                shtWidth = photo.Width
                shtHeight = photo.Height

                photo = Nothing
            Catch ex As Exception
                'Throw New Exception(strfilename & " " & ex.Message)
                shtWidth = 0
                shtHeight = 0
            End Try
        End If

        fs.Close()
        fs = Nothing

        Return "" & shtWidth.ToString & "*" & shtHeight.ToString

    End Function

    Private Sub btnNewFolder_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnNewFolder.Click

        '// skapa en ny mapp i förhållande till trädstrukturen
        ' lstNewFolder

        Dim currUploadPath As String
        If pellesoft.Site.IsLocalhost Then
            currUploadPath = System.Configuration.ConfigurationManager.AppSettings("UploadImagePathLocal") & "\" & CStr(pellesoft.User.CurrentUserId) & "\"
        Else
            currUploadPath = System.Configuration.ConfigurationManager.AppSettings("UploadImagePath") & "\" & CStr(pellesoft.User.CurrentUserId) & "\"
        End If

        If lstNewFolder.SelectedIndex = 0 Then
            ' vi skall skapa en ny root-mapp
            MkDir(currUploadPath & "\" & txtNewFolder.Text)
        Else
            ' en undermapp
            MkDir(currUploadPath & "\" & lstNewFolder.SelectedValue & "\" & txtNewFolder.Text)
        End If

        ' Ladda om sidan så vi ser ändringarna
        Response.Redirect(Request.Url.ToString)

    End Sub



Svara

Nyligen

  • 18:42 Hvor finder man håndlavede lamper
  • 18:41 Hvor finder man håndlavede lamper
  • 16:36 Allt du behöver veta om keramiskt
  • 16:14 Vem anlitar man egentligen när tak
  • 16:14 Vem anlitar man egentligen när tak
  • 16:13 Vem anlitar man egentligen när tak
  • 11:52 Noen erfaring med uttak hos Mostbe
  • 11:51 Noen erfaring med uttak hos Mostbe

Sidor

  • Hem
  • Bli bonusmedlem
  • Läs artiklar
  • Chatta med andra
  • Sök och erbjud jobb
  • Kontakta oss
  • Studentlicenser
  • Skriv en artikel

Statistik

Antal besökare:
Antal medlemmar:
Antal inlägg:
Online:
På chatten:
4 570 568
27 958
271 741
3 050
0

Kontakta oss

Frågor runt konsultation, rådgivning, uppdrag, rekrytering, annonsering och övriga ärenden. Ring: 0730-88 22 24 | pelle@pellesoft.se

© 1986-2013 PelleSoft AB. Last Build 4.1.7169.18070 (2019-08-18 10:02:21) 4.0.30319.42000
  • Om
  • Kontakta
  • Regler
  • Cookies