asp.net存储图像

时间:2010-09-23 18:01:11

标签: asp.net

这是我的初级程序员外部人员

我正在尝试从我的数据库中显示图像,但是当我尝试提取文件时,它只包含6个字节的数据,导致我的程序抛出错误。我的导师告诉我,文件对于图像而言太小,导致我相信我没有正确存储它。如果有人能够识别可能导致这种情况发生的任何代码,我将是最亲切的。

这是我的函数抓取/存储文件

Protected Sub btnUpload_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnUpload.Click
    Dim _image As Byte()
    _image = FileUpload1.FileBytes
    Dim conn As New SqlConnection
    Dim cmd As New SqlCommand

    Dim dr As SqlDataReader

    conn.ConnectionString = System.Configuration.ConfigurationManager.ConnectionStrings("ConnectionString").ConnectionString
    cmd.Connection = conn
    cmd.CommandText = "Insert INTO mrg_Image(Image, UserId) VALUES('@image', @id)"

    cmd.Parameters.AddWithValue("@image", FileUpload1.FileBytes)
    cmd.Parameters.AddWithValue("@id", 4)


    conn.Open()
    dr = cmd.ExecuteReader
    conn.Close()

    'FileUpload1.SaveAs()

End Sub



    conn.Open()

file_bytes是包含6个字节的变量,与图像应该具有的一千个+相对

    Dim file_bytes As Byte() = cmd.ExecuteScalar()        
    Dim file_bytes_memory_stream As New System.IO.MemoryStream(file_bytes)
    Dim file_bytes_stream As System.IO.Stream = DirectCast(file_bytes_memory_stream, System.IO.Stream)

    Dim the_image As New System.Drawing.Bitmap(file_bytes_stream)

    context.Response.ContentType = "image/jpg"
    the_image.Save(context.Response.OutputStream, System.Drawing.Imaging.ImageFormat.Jpeg)        

    conn.Close()
End Sub

2 个答案:

答案 0 :(得分:0)

试试这个

cmd.CommandText = "Insert INTO mrg_Image(Image, UserId) VALUES(@image, @id)"
cmd.Parameters.Add("@image", SqlDbType.Image)
cmd.Parameters("@image") = FileUpload1.FileBytes
cmd.Parameters.AddWithValue("@id", 4)

修改 删除了“;”忘了这是vb

<强> EDIT2 变成 ()。再次忘记了我的VB

答案 1 :(得分:0)

尝试用@image替换'@image'。

还用ExecuteNonQuery替换ExecuteReader。


我不知道FileBytes属性,我总是这么做......

Dim _image(FileUpload1.PostedFile.InputStream.Length)As Byte FileUpload1.PostedFile.InputStream.Read(_image,0,_image.Length)