2

FileUploadfileupload2コントロールとイメージ ボックス コントロールがありimage1ます。ここで、閲覧画像を保存し、パスを閲覧するときに画像ボックスに表示したいと考えています。以下のようなコードを書いています。

そのコードの問題と、パスを参照するときに画像ボックスに表示する方法は何ですか?

Protected Sub btnsave_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnsave.Click
    Connection()

    Dim cmd As New SqlCommand
    cmd.Connection = cn
    cmd.CommandText = "INSERT INTO Personal_info (image_id,pic)VALUES (@image_id,@pic)"

    cmd.Parameters.Add("@image_id", SqlDbType.VarChar, 200)
    cmd.Parameters.Add("@pic", SqlDbType.Image, 200)

    cmd.Parameters("@image_id").Value = txtid.Text
    cmd.Parameters("@pic").Value = FileUpload2.FileBytes

    Dim i = -1

    i = cmd.ExecuteNonQuery

    If i = -1 Then
        lblMessage.ForeColor = Drawing.Color.Red
        lblMessage.Text = "Fail to Save"
        'MsgBox("Fail", MsgBoxStyle.OkOnly, "Error")
    Else
        lblMessage.ForeColor = Drawing.Color.Green
        lblMessage.Text = "Success to Save"
    End If
End Sub
4

1 に答える 1

-1

画像ボックスに画像を表示するには、画像のパスまたは URL を指定する必要があります。データベースから直接読み取ることはできません。

それを行う1つの方法は

  1. データベースから画像を取得する
  2. 画像をサーバーに保存する
  3. 画像ボックスに画像サーバーのパスを渡す

    '1. retrieve the imange from the database
    Dim cmd As New SqlCommand
    cmd.Connection = cn
    cmd.CommandText = "SELECT pic FROM Personal_info  WHERE image_id=@image_id;"
    
    cmd.Parameters.Add("@image_id", image_id)
    
    Dim rd As SqlDataReader = cmd.ExecuteReader
    Dim MyData() As Byte
    If rd.Read Then
        If rd("pic").ToString <> Nothing Then
            MyData = rd("pic")
        End If
    
    End If
    
    '2. save the image in the server
    Dim oFileStream As New System.IO.FileStream(System.AppDomain.CurrentDomain.BaseDirectory & "image\image.jpg", System.IO.FileMode.Create, IO.FileAccess.ReadWrite)
    oFileStream.Write(MyData, 0, MyData.Length)
    oFileStream.Close()
    
    '3. pass the image box the image server path
    image1.ImageUrl = "~/image/image.jpg"
    
于 2012-11-21T08:10:26.903 に答える