2010-09-23 93 views
0

這是我的初級程序員extraodinaireasp.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 
+0

HasFile是真的嗎?將FileBytes數組保存到數據庫之前,它的大小是多少? – Will 2010-09-23 18:04:25

+0

什麼類型的字段是'圖片'字段? – CodingGorilla 2010-09-23 18:04:34

+0

什麼是數據類型的字段圖像,以及爲什麼圖像參數值的單引號? – 2010-09-23 18:05:39

回答

0

嘗試用@image替換'@image'。

也用ExecuteNonQuery替換ExecuteReader。


我不知道FileBytes財產的,我一直在做這麼...

暗淡_image(FileUpload1.PostedFile.InputStream.Length)爲字節 FileUpload1.PostedFile.InputStream .Read(_image,0,_image.Length)

+0

FileBytes 2.0中添加了 – 2010-09-23 20:06:18

+0

我收到一些錯誤,當我嘗試轉換爲executeNonQuery時說:「Value of type,」integer「不能轉換爲system.data.sqlclient.sqlDatareader – PaulR 2010-09-23 20:34:22

+0

我只是嘗試刪除單引號,看看會發生什麼,當我嘗試從數據庫中選擇圖像時出現新錯誤。錯誤是:在文本內容中找到無效字符。處理資源'http:// localhost:1459/VS/images.ashx'時出錯。希望我可以在我的ashx頁面中放置一個標籤。 – PaulR 2010-09-23 20:39:50

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

編輯2 更改[]爲()。再次忘了我的VB

+0

有幾條藍線 - 第一條說sqldbType.Image沒有聲明,並在cmd.Paramaters [「image」] = FileUpload1.FileBytes它說屬性訪問必須分配給屬性或使用它的值 – PaulR 2010-09-23 20:38:20

+0

@ user412318:不要知道你爲什麼得到sqldbType.Image沒有聲明。它自1.1以來一直在那裏。我修復了第二個,這很容易 – 2010-09-23 21:13:19