使用fileupload控件(ASP.net C#)选择多个图像文件,并一键保存在数据库中。

时间:2014-02-12 04:04:13

标签: c# asp.net file-upload

我可以使用fileupload控件选择多个文件,但是当我尝试将其保存到数据库时,它会给我一个“未设置为对象实例的对象引用”错误。

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;
    }
}

3 个答案:

答案 0 :(得分:0)

在fileupload控件中设置属性 AllowMultiple = True

protected void uploadFile_Click(object sender, EventArgs e)
{
   if (UploadImages.HasFiles)
   {
       foreach (HttpPostedFile uploadedFile in UploadImages.PostedFiles)
       {
           uploadedFile.SaveAs(System.IO.Path.Combine(Server.MapPath("~/Images/"),
           uploadedFile.FileName));
           listofuploadedfiles.Text += String.Format("{0}<br/>", uploadedFile.FileName);
       }
   }

}

答案 1 :(得分:0)

我知道它在上述方法中出错了,但是该方法中的哪一行给出了这个错误?

我假设你在这里给出的方法是完整的(即没有你在此处粘贴之前删除的代码),所以我想只有2个对象可以为null,那些是“scon”和“供应链管理”。在“scon.Open();”行上设一个断点并在线“scm.Connection = scon;”。一旦执行在每条线上停止,将鼠标悬停在“scon”上,然后悬停在“scm”上。我猜其中任何一个都是null。

希望这有帮助。

答案 2 :(得分:0)

问题是我的目标。它没有正确实例化。我正在访问名为DBmiddleTier的appcode中的一个类来访问数据库并编写映像文件。这就是我做错了:DBMiddleTier dbmt; &LT; -----&#34; WRONG&#34 ;.以下是我为解决问题所做的工作DBMiddleTier dbmt = new DBMiddleTier();