Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/272.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 尝试将图像上载到数据库时出现“对象引用未设置为对象实例”错误_C#_Sql_Image_Upload - Fatal编程技术网

C# 尝试将图像上载到数据库时出现“对象引用未设置为对象实例”错误

C# 尝试将图像上载到数据库时出现“对象引用未设置为对象实例”错误,c#,sql,image,upload,C#,Sql,Image,Upload,我正在尝试使用C将一个图像上载到SQL数据库。我从另一个站点找到了一些代码,这些代码在测试项目中工作得非常好。但当我复制并粘贴代码并将其放入实际项目中时,它会给我一个“对象引用未设置为对象实例”错误。这对我来说毫无意义,因为它在测试项目中工作得很好。代码如下 protected void btnAddDevice_Click(object sender, EventArgs e) { byte[] myimage = new byte[FileUpload1.PostedFile.Con

我正在尝试使用C将一个图像上载到SQL数据库。我从另一个站点找到了一些代码,这些代码在测试项目中工作得非常好。但当我复制并粘贴代码并将其放入实际项目中时,它会给我一个“对象引用未设置为对象实例”错误。这对我来说毫无意义,因为它在测试项目中工作得很好。代码如下

protected void btnAddDevice_Click(object sender, EventArgs e)
{
    byte[] myimage = new byte[FileUpload1.PostedFile.ContentLength];
    HttpPostedFile Image = FileUpload1.PostedFile;
    Image.InputStream.Read(myimage, 0, (int)FileUpload1.PostedFile.ContentLength);
    SqlConnection myConnection = new SqlConnection(cnString);
    SqlCommand storeimage = new SqlCommand("insert into ImageTable (img,description,width,height) values(" + "@image,'Description',@imagesize,@imageheight)", myConnection);
    storeimage.Parameters.Add("@image", SqlDbType.Image, myimage.Length).Value = myimage;
    System.Drawing.Image img = System.Drawing.Image.FromStream(FileUpload1.PostedFile.InputStream);
    storeimage.Parameters.Add("@imagesize", SqlDbType.BigInt, 99999).Value = img.Width;
    storeimage.Parameters.Add("@imageheight", SqlDbType.BigInt, 99999).Value = img.Height;
    myConnection.Open();
    storeimage.ExecuteNonQuery();
    myConnection.Close();
}

当设置字节时,我在方法的第一行得到错误。我到处都找过,尝试过很多不同的方法,但我不知道为什么会出现这种错误。任何帮助都将不胜感激。

在第一行设置断点,并查看所涉及的变量。当您需要一个值时,其中一个将为null

FileUpload1.PostedFile很可能为空。确保在尝试读取其字节之前已指定文件。

可能的问题:


您正在读取HttpPostedFile.InputStream两次,但没有重置位置。

哪一个为空,FileUpload1.PostedFile?在第一行设置断点。调试。当您点击断点时,将鼠标悬停在表达式右侧的所有内容上,查看哪个项为null。修复这个问题。你认为在数据库中上传图片是个好主意吗?我不这么认为!!!你建议我怎么做?第二,检查FileUpload1.PostedFile!=在执行剩余代码之前为null。好的,我设置了断点,它在断点上停止,现在如何查看/知道哪个变量为null?查看本地的窗口,或将其添加到监视窗口,或将鼠标悬停在值上。我自己也偏爱直接窗口?PostedFileOk,我通过添加一个If语句来消除错误。我希望我早就知道要这么做了。但是为什么我不需要在我的测试应用程序中这样做呢?我想你以前从来没有在不指定文件的情况下单击upload进行过测试。