好了,所以我用用用VARBINARY使用文件上傳
HttpPostedFile postedFile = eventImage.PostedFile;
string fileExtension = Path.GetExtension(postedFile.FileName);
if (fileExtension.ToLower() == ".jpg" || fileExtension.ToLower() == ".png")
{
Stream stream = postedFile.InputStream;
BinaryReader reader = new BinaryReader(stream);
byte[] imgByte = reader.ReadBytes((int)stream.Length);
con = new SqlConnection(@"Data Source=(LocalDb)\MSSQLLocalDB;AttachDbFilename=|DataDirectory|\aspnet-StudentMoneySaver-20160203040444.mdf;Initial Catalog=aspnet-StudentMoneySaver-20160203040444;Integrated Security=True");
SqlCommand cmd = new SqlCommand("insert into Events (AspNetUsersId,EvtName,EvtType,EvtDescription,EvtDate,EvtVote, EvtImage) values (@AspNetUsersId, @EvtName, @EvtType, @EvtDescription, @EvtDate, @EvtVote, @EvtImage)", con);
cmd.Parameters.AddWithValue("@AspNetUsersId", userId);
cmd.Parameters.AddWithValue("@EvtName", eventName.Text);
cmd.Parameters.AddWithValue("@EvtType", eventType.Text);
cmd.Parameters.AddWithValue("@EvtDescription", eventDescription.Text);
cmd.Parameters.AddWithValue("@EvtDate", datetimepicker.Value);
cmd.Parameters.AddWithValue("@EvtVote", 0);
cmd.Parameters.Add("@EvtImage", SqlDbType.VarBinary).Value = imgByte;
con.Open();
cmd.ExecuteNonQuery();
con.Close();
}
將它添加到數據庫,並嘗試使用
byte[] imgByte = null;
con = new SqlConnection(@"Data Source=(LocalDb)\MSSQLLocalDB;AttachDbFilename=|DataDirectory|\aspnet-StudentMoneySaver-20160203040444.mdf;Initial Catalog=aspnet-StudentMoneySaver-20160203040444;Integrated Security=True");
SqlCommand cmd = new SqlCommand("SELECT * FROM Events", con);
con.Open();
DataSet ds = new DataSet();
SqlDataAdapter da = new SqlDataAdapter(cmd);
da.Fill(ds);
foreach (DataRow dr in ds.Tables[0].Rows)
{
string str = Convert.ToBase64String(imgByte);
imageTest.Src = "data:Image/png;base64," + str;
}
與調用只是圖像前端代碼是
<img runat="server" id="imageTest" src="imageIDtagName" />
我收到錯誤消息「值不能爲空。 霸rameter名稱:inArray
描述:執行當前Web請求期間發生未處理的異常。請查看堆棧跟蹤以獲取有關該錯誤的更多信息以及源代碼的位置。
異常詳細信息:System.ArgumentNullException:值不能爲空。 參數名:inArray」我想我接近
你可以檢查數據庫,圖像列是否正確設置。例如與SQL Server Managment Studio –
嗨。圖像列設置爲varbinary(MAX) – Stuart
你沒有清楚地說明什麼是不工作的,以及你在做什麼。保存操作是否正常工作,如果是,那麼文件名屬性是什麼?當你嘗試加載它會發生什麼?請在運行代碼時發佈正在發生的事情。 –