2009-04-18 21 views
0

ich erfolgreich hochladen und Bild und Größe ändern. Jetzt möchte ich den Namen meines Bildes in die Datenbank einfügen.Wie füge ich einen Bildnamen in eine Datenbank ein?

Ich benutze SQL Server. Die Tabelle heißt images und hat zwei Spalten, eine ganze Zahl imageid und imagename als string(invarchar(max)). Ich brauche den Dateinamen in der Image-Spalte gespeichert und imageid muss eine Identität sein.

Hier ist der Code, den ich bisher habe:

Imports System.Drawing 
Imports System.Drawing.Drawing2D 
Imports System.Drawing.Imaging 
Imports System.IO 
Imports System.Data.SqlClient 
Imports System.Data 
Partial Class _Default 
    Inherits System.Web.UI.Page 

    Protected Sub btnupload_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnupload.Click 
     Response.Write("Done") 
     If (IsPostBack) Then 
      HandleUploadedFile() 
     End If 
    End Sub 
    Private Sub HandleUploadedFile() 
     ' get the root of the web site 
     Dim root As String = Server.MapPath("~/") 

     ' clean up the path 
     If Not root.EndsWith("\") Then 
      root += "\" 
     End If 

     ' make a folder to store the images in 
     Dim fileDirectory As String = root & "Images/" 

     ' create the folder if it does not exist 
     If Not System.IO.Directory.Exists(fileDirectory) Then 
      System.IO.Directory.CreateDirectory(fileDirectory) 
     End If 

     ' make a link to the new file 
     Dim link As String = "<a href='Images/{0}' target='_blank'>{1}</a>{2}{3}" 

     ' loop through the file in the request 
     For i As Integer = 0 To Request.Files.Count - 1 

      ' get the file instance 
      Dim fi As HttpPostedFile = Request.Files.[Get](i) 

      ' create a byte array to store the file bytes 
      Dim fileBytes As Byte() = New Byte(fi.ContentLength - 1) {} 

      ' fill the byte array 
      Using stream As System.IO.Stream = fi.InputStream 
       stream.Read(fileBytes, 0, fi.ContentLength) 
      End Using 

      ' create a random file name 
      Dim fileName As String = Guid.NewGuid().ToString() 

      ' write the original file to the file system 
      File.WriteAllBytes(fileDirectory + fileName & ".jpg", fileBytes) 
      litText.Text += String.Format(link, fileName & ".jpg", fileName & " Original", "<br/>", "") 

      ' write the resized file to the file system 
      File.WriteAllBytes(fileDirectory + fileName & "_small.jpg", ResizeImageFile(fileBytes, 100)) 
      litText.Text += String.Format(link, fileName & "_small.jpg", fileName & " Small", "<br/>", "<br/>") 

      ' cleanup 
      litText.Visible = True 
      fileBytes = Nothing 
     Next 
    End Sub 
    Private Shared Function ResizeImageFile(ByVal imageFile As Byte(), ByVal targetSize As Integer) As Byte() 
     Using oldImage As System.Drawing.Image = System.Drawing.Image.FromStream(New MemoryStream(imageFile)) 
      Dim newSize As Size = CalculateDimensions(oldImage.Size, targetSize) 
      Using newImage As New Bitmap(newSize.Width, newSize.Height, PixelFormat.Format24bppRgb) 
       Using canvas As Graphics = Graphics.FromImage(newImage) 
        canvas.SmoothingMode = SmoothingMode.AntiAlias 
        canvas.InterpolationMode = InterpolationMode.HighQualityBicubic 
        canvas.PixelOffsetMode = PixelOffsetMode.HighQuality 
        canvas.DrawImage(oldImage, New Rectangle(New Point(0, 0), newSize)) 
        Dim m As New MemoryStream() 
        newImage.Save(m, ImageFormat.Jpeg) 
        Return m.GetBuffer() 
       End Using 
      End Using 
     End Using 
    End Function 
    Private Shared Function CalculateDimensions(ByVal oldSize As Size, ByVal targetSize As Integer) As Size 
     Dim newSize As New Size() 
     If oldSize.Height > oldSize.Width Then 
      newSize.Width = CInt((oldSize.Width * (CSng(targetSize)/CSng(oldSize.Height)))) 
      newSize.Height = targetSize 
     Else 
      newSize.Width = targetSize 
      newSize.Height = CInt((oldSize.Height * (CSng(targetSize)/CSng(oldSize.Width)))) 
     End If 
     Return newSize 
    End Function 
End Class 
+0

Das kann der Code sein, aber was ist Ihre Frage? –

+0

ich möchte wissen, wie man den Bildnamen in der Datenbank hinzufügt –

+0

Welche Art von Datenbank? Welcher Server? Welches Tabellenschema? Welches OS? Welcher Ausführungskontext? Welche Laufzeitumgebung? Eine Klarstellung, die einfach hinzufügt "Ich will wissen, wie man das Ding tut, das ich vorher nicht erklärt habe", ist eigentlich keine Klarstellung :) –

Antwort

1

Zuerst müssen Sie Ihre Verbindungszeichenfolge kennen. Da der Code auf den SQLClient verweist, nehme ich an, dass Sie SQL Server verwenden, also sollten Sie nach here suchen. Als Nächstes möchten Sie die ExecuteNonQuery-Methode des SQLCommand-Objekts verwenden. Ich habe unten ein Beispiel eingefügt. Sie können mehr über das SQLCommand-Objekt here lesen. Und das site umfasst Insert-Anweisungen.

Verwandte Themen