Avatar billede pcl Nybegynder
17. september 2002 - 16:12 Der er 5 kommentarer og
1 løsning

Tilføj billeder til database

Jeg prøver at lave en funktion, der tager en fil fra en <input type="file" og tilføjer billedet direkte til en database, som har datatypen sat til 'Image'.
På samme tid laver jeg en thumbnail af den uploadede fil.

Den første ting går fint , altså upload af det submittede billede.

Men når jeg prøver at at konvertere thumbnailen til bytes går det galt. Indtil videre har jeg prøvet at gemme thumbnailen på disk, hvilket også godt kan lade sig gøre. Men thumbnailen skulle gerne lægges ned iu databasen samtidig med det submittede billed (fil).

Her er min kode indtil videre jeg håber at der er nogen der kan hjælpe.


Sub UploadImage(sender as object, e as EventArgs)

Dim orginalimg, thumb As System.Drawing.Image

Dim FileName As String

Dim inp As New IntPtr()

Dim width, height As Integer

Dim imgstream As Stream = ImageFile.PostedFile.InputStream

Dim imgdata(ImageFile.PostedFile.ContentLength) As Byte

imgstream.Read(imgdata, 0, ImageFile.PostedFile.ContentLength)


'Create thumbnail

'-----------------------------------

Her omk. i dette område skal jeg lave thumbnail og konvertere den til nytes (tror jeg nok)

Dim strFileNamePath as string = ImageFile.PostedFile.FileName    'Gets the
filename and Path

orginalimg = orginalimg.FromFile(strFileNamePath)      'Fetch User Filename


width = orginalimg.Width*0.5

height = orginalimg.Height*0.5

thumb = orginalimg.GetThumbnailImage(width, height, Nothing, inp)


thumb.Save(server.mappath("temp3.jpg"), Imaging.ImageFormat.Jpeg)


Dim fileInfo As New FileInfo(server.mappath("temp3.jpg"))    'for now write
it to disk

Dim imgdata2(fileInfo.Length) As Byte    'this dosnt work

'----------------------

Dim objConn as New SQLClient.SQLConnection("HIDDEN DETAILS")


Dim cmdText = "INSERT INTO pclPROJECTS_PICTURES(Picture,ThumbNail,ProjectID)
VALUES(@image,@ThumbNail,@PID)"


Dim objcmd As New SqlClient.SqlCommand(cmdText, objConn)


Dim imgparam As New SqlClient.SqlParameter("@image", SqlDbType.Image)

Dim imgthumb As New SqlClient.SqlParameter("@ThumbNail", SqlDbType.Image)

Dim idparam As New SqlClient.SqlParameter("@PID", SqlDbType.Int)

imgparam.Value = imgdata

imgthumb.Value = imgdata2

idparam.Value = 1

objcmd.Parameters.Add(imgparam)

objcmd.Parameters.Add(imgthumb)

objcmd.Parameters.Add(idparam)

objconn.Open()

objcmd.ExecuteNonQuery()

objconn.close()

End Sub
Avatar billede odegaard Nybegynder
17. september 2002 - 16:59 #1
Jeg lytter lige med :-)
Avatar billede pcl Nybegynder
17. september 2002 - 17:20 #2
det er ok, men jeg ville selvfølgelig foretrække at du kunne svare på mit ? he he
Avatar billede burningice Nybegynder
17. september 2002 - 17:34 #3
odegaard>> det er nok bare at trykke udfør uden at skrive hverken et svar eller kommentar
Avatar billede pcl Nybegynder
17. september 2002 - 18:56 #4
Jeg tror sgu næsten at jeg har løst det, der kommer en post i aften eller i morgen.  fedt manner.
Avatar billede pcl Nybegynder
17. september 2002 - 19:43 #5
SÅ er det fikset,så jeg tager selv pointene. Her er koden.

<%@ Page Language="vb" debug="true"%>
<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.IO" %>
<%@ Import Namespace=System.Drawing %>
<script language="vb" runat="server">

Sub UploadImage(sender as object, e as EventArgs)
   
    '-----------------------------------------------------------------------------------------------------   
    'VARIABLES
    '-----------------------------------------------------------------------------------------------------   
    Dim aImgOrginal, aImgThumb As System.Drawing.Image
    Dim inp As New IntPtr()
    Dim aIntWidth, aIntHeight As Integer
    Dim aIntTempMultiplier As Integer
    Dim strFileNamePath as string = ImageFile.PostedFile.FileName    'Gets the filename and Path
    Dim strFileName As String = Path.GetFileName(strFileNamePath)    'Gets the filename
   
    aImgOrginal = aImgOrginal.FromFile(strFileNamePath)       
   
    Dim ImgStream As Stream = ImageFile.PostedFile.InputStream
    Dim OriginalImage(ImageFile.PostedFile.ContentLength) As Byte
   
    ImgStream.Read(OriginalImage, 0, ImageFile.PostedFile.ContentLength)
   
           
    '-----------------------------------------------------------------------------------------------------   
    'DEFINE THUMBNAIL SIZE, BASED ON ORIGINAL IMAGE SIZE
    '-----------------------------------------------------------------------------------------------------   
    If aImgOrginal.Height > aImgOrginal.Width then ' portrait 
        aIntTempMultiplier = 100 / aImgOrginal.Height 
    Else  'landscape
        aIntTempMultiplier = 100 / aImgOrginal.Width
    End if 
   
    aIntWidth = aImgOrginal.Width * aIntTempMultiplier
    aIntHeight =  aImgOrginal.Height * aIntTempMultiplier

    '-----------------------------------------------------------------------------------------------------   
    'SAVE THUMBNAIL TO DISK
    '-----------------------------------------------------------------------------------------------------   
    aImgThumb = aImgOrginal.GetThumbnailImage(aIntWidth, aIntHeight, Nothing, inp)

    aImgThumb.Save(Server.Mappath(strFileName), Imaging.ImageFormat.Jpeg)
   
    '-----------------------------------------------------------------------------------------------------   
    'CREATE A FILESTREAM, SO WE CAN CONVERT THE THUMB TO BYTE
    '-----------------------------------------------------------------------------------------------------   
    Dim fs as FileStream = New FileStream(Server.Mappath(strFileName),FileMode.OpenOrCreate,FileAccess.Read)
    Dim ThumbNail(fs.Length) As Byte
    fs.Read(ThumbNail, 0, Convert.ToInt32(fs.Length))
    fs.Close()
   
    '-----------------------------------------------------------------------------------------------------   
    'INSERT INFO INTO YOUR DATABASE
    '-----------------------------------------------------------------------------------------------------   
    Dim objConn as New SQLClient.SQLConnection("server=localhost;uid=sa;pwd=;Database=BetFiguerasCOM")
   
    Dim cmdText = "INSERT INTO pclPROJECTS_PICTURES(Picture,ThumbNail) VALUES(@image,@ThumbNail)"
   
    Dim objcmd As New SqlClient.SqlCommand(cmdText, objConn)
   
    Dim imgparam As New SqlClient.SqlParameter("@image", SqlDbType.Image)
    Dim imgthumb As New SqlClient.SqlParameter("@ThumbNail", SqlDbType.Image)

    imgparam.Value = OriginalImage
    imgthumb.Value = ThumbNail

    objcmd.Parameters.Add(imgparam)
    objcmd.Parameters.Add(imgthumb)

    objconn.Open()
    objcmd.ExecuteNonQuery()
    objconn.close()
   
    '-----------------------------------------------------------------------------------------------------   
    'Now we are finished, delete the temporary thumbnail
    '-----------------------------------------------------------------------------------------------------   
    If (File.Exists(Server.Mappath(strFileName))) Then
        File.Delete(Server.Mappath(strFileName))
    End If
   
End Sub
</script>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
  <head>
    <title></title>
    <meta name="GENERATOR" content="Microsoft Visual Studio.NET 7.0">
    <meta name=vs_defaultClientScript content="JavaScript">
    <meta name=vs_targetSchema content="http://schemas.microsoft.com/intellisense/ie5">
  </head>
  <body>
<form enctype="multipart/form-data" runat="server" id="frmUpload">
<input id="ImageFile" runat="server" type="file" /><p>
<asp:button runat="server" OnClick="UploadImage" text="Upload pictures"/>
</form>
  </body>
</html>
Avatar billede pcl Nybegynder
17. september 2002 - 20:48 #6
Og her er kode til at oprette tabellen i DB:

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[image]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
drop table [dbo].[image]
GO

CREATE TABLE [dbo].[image] (
    [ID] [int] IDENTITY (1, 1) NOT NULL ,

    [Picture] [image] NULL ,
    [Thumbnail] [image] NULL ,
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
GO

ALTER TABLE [dbo].[image] WITH NOCHECK ADD
    CONSTRAINT [PK_image] PRIMARY KEY  NONCLUSTERED
    (
        [ID]
    )  ON [PRIMARY]
GO
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester