【发布时间】:2016-04-14 00:28:24
【问题描述】:
好的,我正在使用将其添加到数据库中
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" />
我收到错误消息“值不能为空。 参数名称:inArray
说明:在执行当前 Web 请求期间发生未处理的异常。请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息。
异常详细信息:System.ArgumentNullException:值不能为空。 参数名称:inArray" 我想我接近了!
【问题讨论】:
-
您能否检查一下数据库,是否正确设置了图像列。例如使用 SQL Server 管理工作室
-
嗨。图像列设置为 varbinary(MAX)
-
您没有清楚地说明什么不起作用以及您正在做什么。保存操作是否有效,如果是,文件名属性是什么?当您尝试加载它时会发生什么?请发布运行代码时发生的情况。
-
您的保存似乎只保存文件名,而不是实际的文件数据。您的负载似乎将文件名的二进制表示设置为图像的 src 属性,该图像实际上应该是一个 url。我可能是错的,但根据记忆,我看到了几个问题。