mehdirahimi
New Member
سلام،
من ميخواستم در Vb.net يك عكس را در Sql ذخيره و بازيابي كنم. لطفا هر كي ميدونه من رو راهنمايي كنه.
مرسي
من ميخواستم در Vb.net يك عكس را در Sql ذخيره و بازيابي كنم. لطفا هر كي ميدونه من رو راهنمايي كنه.
مرسي
سلام
این پرسش در این انجمن خیلی پرسیده شده. اگه یه جستجو می کردی حتماً پیدا می کردی.
-----
اما ... باید آدرس عکس رو در DB ذخیره کنی نه خود عکس رو .
بعد خود عکس رو از طریق متد upload توی اون مسیر قرار بدی.
در مورد upload file در ASP.NET لینک زیر می تونه کمکت کنه البته این c# هست اما به راحتی خودت می تونی رو VB بیاریش:
http://www.codeproject.com/aspnet/fileupload.asp
Imports System
Imports System.Web
Imports System.Web.UI
Imports System.Web.UI.WebControls
Imports System.Web.UI.HtmlControls
Imports System.IO
Imports System.Data
Imports System.Data.SqlClient
Imports System.Collections
Imports System.ComponentModel
Imports System.Drawing
Imports System.Web.SessionState
Partial Class _Default
Inherits System.Web.UI.Page
Protected Overrides Sub OnInit(ByVal e As EventArgs)
InitializeComponent()
MyBase.OnInit(e)
End Sub
Private Sub InitializeComponent()
* Me.Load += New System.EventHandler(Me.Page_Load)
* Me.cmdSend.Click += New System.EventHandler(Me.cmdSend_Click)
End Sub
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
If (Request.QueryString("fileid") <> "") Then
ShowTheFile(Convert.ToInt32(Request.QueryString("fileid")))
End If
End Sub
Protected Sub cmdSend_Click1(ByVal sender As Object, ByVal e As System.EventArgs) Handles cmdSend.Click
Dim myFile As HttpPostedFile = filMyFile.PostedFile
Dim nFileLen As Integer = myFile.ContentLength
If nFileLen > 0 Then
Dim myData() As Byte = New Byte(nFileLen) {}
myFile.InputStream.Read(myData, 0, nFileLen)
Dim strFilename As String = System.IO.Path.GetFileName(myFile.FileName)
* WriteToFile(Server.MapPath(strFilename), myData)
Dim nFileID As Integer
nFileID = WriteToDB(strFilename, myFile.ContentType, myData)
lblInfo.Text = "Filename: " + strFilename + "<br>" + "Size: " + nFileLen.ToString() + "<p>"
imgFile.ImageUrl = strFilename
imgFile.ToolTip = "This file was stored to as file."
lblText1.Text = imgFile.ImageUrl
imgDB.ImageUrl = GetMyName() + "?fileid=" + nFileID.ToString()
imgDB.ToolTip = "This file was stored in database."
lblText2.Text = imgDB.ImageUrl
imgFile.Visible = True
imgDB.Visible = True
lblText1.Visible = True
lblText2.Visible = True
End If
End Sub
Private Sub WriteToFile(ByRef Buffer As Byte(), ByVal strpath As String)
Dim newfile As FileStream
newfile = New FileStream(strpath, FileMode.Create)
newfile.Write(Buffer, 0, Buffer.Length)
newfile.Close()
End Sub
Private Function WriteToDB(ByVal strname As String, ByVal strType As String, ByRef Buffer As Byte()) As Integer
Dim nFileID As Integer
nFileID = 0
Dim dbConn As SqlConnection
dbConn = New SqlConnection("Data Source=SEPAHAN-BD5CB18\SQLEXPRESS;Initial Catalog=ssgshop;Integrated Security=True")
Dim dbAdapt As SqlDataAdapter
dbAdapt = New SqlDataAdapter("SELECT * FROM kala", dbConn)
dbAdapt.MissingSchemaAction = MissingSchemaAction.AddWithKey
Dim dbCB As SqlCommandBuilder
dbCB = New SqlCommandBuilder(dbAdapt)
dbConn.Open()
Dim dbSet As DataSet
dbSet = New DataSet()
dbAdapt.Fill(dbSet, "kala")
Dim dbTable As DataTable
dbTable = dbSet.Tables("kala")
Dim dbRow As DataRow
dbRow = dbTable.NewRow()
dbRow("FileName") = "D:/Inetpub/wwwroot/FileUpload_demo"
dbRow("FileSize") = Buffer.Length
dbRow("ContentType") = strType
dbRow("picture") = Buffer
dbTable.Rows.Add(dbRow)
dbAdapt.Update(dbSet, "kala")
If Not (dbRow.IsNull("fileid")) Then
nFileID = dbRow("fileid")
End If
dbConn.Close()
Return (nFileID)
End Function
Private Function ShowTheFile(ByVal FileID As Integer)
Dim sql As String
sql = "SELECT FileSize, picture, ContentType FROM kala WHERE fileid = " + FileID.ToString()
Dim dbConn As SqlConnection
dbConn = New SqlConnection("Data Source=SEPAHAN-BD5CB18\SQLEXPRESS;Initial Catalog=ssgshop;Integrated Security=True")
Dim dbComm As SqlCommand
dbComm = New SqlCommand(sql, dbConn)
dbConn.Open()
Dim dbRead As SqlDataReader
dbRead = dbComm.ExecuteReader()
dbRead.Read()
Response.Clear()
Response.ContentType = dbRead("ContentType")
*Response.OutputStream.Write((byte())dbRead("picture"), 0, (int)dbRead("FileSize"));
dbConn.Close()
Response.End()
End Function
Private Function GetMyName() As String
Dim strScript As String
strScript = Request.ServerVariables("SCRIPT_NAME")
Dim nPos As Integer
nPos = strScript.LastIndexOf("/")
If (nPos > -1) Then
strScript = strScript.Substring(nPos + 1)
End If
Return (strScript)
End Function
End Class
Response.OutputStream.Write((byte())dbRead("picture"), 0, (int)dbRead("FileSize"));
Dim writer As New System.IO.StreamWriter("picture")
writer.WriteLine("FileSize")
writer.Flush()
writer.Close()