【发布时间】:2014-02-21 13:26:09
【问题描述】:
我可以使用文件上传控件选择多个文件,但是当我尝试将其保存到数据库时,它给了我一个“对象引用未设置为对象的实例”错误。
if (FileUpload1.HasFiles)
{
foreach (HttpPostedFile uploaded in FileUpload1.PostedFiles)
{
bindata = new BinaryReader(uploaded.InputStream);
ImageByteArray = bindata.ReadBytes(uploaded.ContentLength);
// byte array is sent to a method
dbmt.SaveImageToDB(ImageByteArray);
}
}
以下是我的 SaveImageToDB 方法的代码
public void SaveImageToDB(byte[] ImageByteArray)
{
try
{
scon.Open();
scm.Connection = scon;
scm.CommandType = CommandType.StoredProcedure;
scm.CommandText = "SaveProfileImage";
SqlParameter paramImgArray = scm.Parameters.Add("@ImgBody", SqlDbType.Image,0);
paramImgArray.Direction = ParameterDirection.Input;
paramImgArray.Value = ImageByteArray;
scm.ExecuteNonQuery();
}
catch( SqlException sqx )
{
throw sqx;
}
}
【问题讨论】:
-
代码的哪一行出现此错误?
-
发生在 dbmt.SaveImageToDB() 中。创建 ImageByteArray(Byte[]) 后,我会将其发送到方法 dbmt.SaveImageToDB(ImageByteArray)。我什至会在使用“if(ImageByteArray != null )”调用该方法之前对其进行测试,它不为空。
-
我要做的是遍历每个选定的文件并将每个文件转换为字节数组,然后发送到方法以便将其保存在数据库中。
-
您是否使用过 asp.net 调试器来单步调试代码 (msdn.microsoft.com/en-us/library/8t6y55xx%28v=vs.80%29.aspx)?执行此操作并随时检查元素或设置监视将指出什么对象为空。
-
谢谢。刚放假回来。谢谢你的问题。它促使我寻找正确的地方。问题是我没有初始化在 appcode 中调用函数的对象。我所做的是 DBmiddleTier dbmt;而不是 DBmiddleTier dbmt = new DBmiddleTier();。这就是为什么程序虽然 dbmt 为空。我一更改它就开始工作。非常感谢你们的帮助。当我还在上学的时候,我应该早就开始使用这个网站了。
标签: c# asp.net file-upload