2014-02-12 22 views
0

我能夠使用fileupload控件選擇多個文件,但是當我嘗試將其保存到數據庫時,它給了我一個「未設置爲對象實例的對象引用」錯誤。使用fileupload控件(ASP.net C#)選擇多個圖像文件並將其單擊保存到數據庫中。

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

你的代碼在哪行得到這個錯誤? – samar

+0

它發生在dbmt.SaveImageToDB()中。在創建ImageByteArray(Byte [])後,我將它發送到方法dbmt.SaveImageToDB(ImageByteArray)。我甚至會在使用「if(ImageByteArray!= null)」調用方法之前對其進行測試,並且它不爲null。 – user3299927

+0

我想要做的是通過選擇每個文件並將其轉換爲一個字節數組,然後發送到該方法,以便將其保存在數據庫中。 – user3299927

回答

0

設置屬性=的AllowMultiple真在FileUpload控件的代碼。

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

}

+0

對不起,我的問題不是很清楚。這是我第一次來這裏。我已將AllowMultiple設置爲true。我可以使用fileupload選擇多個文件。我想要做的是通過選擇每個文件並將其轉換爲一個字節數組,併發送到該方法,以便它可以保存在數據庫中。 – user3299927

+0

謝謝。剛從假期回來。感謝那個問題。它促使我看到正確的地方。問題是我沒有初始化在appcode中調用函數的對象。我做的是DBmiddleTier dbmt;而不是DBmiddleTier dbmt = new DBmiddleTier();.這就是爲什麼程序儘管dbmt爲null。只要我改變它就開始工作。非常感謝你的幫助。很久以前我還在學校的時候就開始使用這個網站了。 – user3299927

0

據我所知,它是在該方法給了一個錯誤,但在其行法裏面是給這個錯誤?

我假設你在這裏給出的方法是完整的(也就是說在粘貼之前沒有你已經刪除的代碼),所以我猜只有2個對象可能是空的,那些是「scon」和「供應鏈管理」。在行「scon.Open();」上放置一個斷點並在線「scm.Connection = scon;」。一旦執行停止在這些行的每一行上,將鼠標懸停在「scon」上,然後通過「scm」。我想他們中的任何一個都是空的。

希望這會有所幫助。

+0

謝謝。剛從假期回來。感謝那個問題。它促使我看到正確的地方。問題是我沒有初始化在appcode中調用函數的對象。我做的是DBmiddleTier dbmt;而不是DBmiddleTier dbmt = new DBmiddleTier();.這就是爲什麼程序儘管dbmt爲null。只要我改變它就開始工作。非常感謝你的幫助。很久以前我還在學校的時候就開始使用這個網站了。 – user3299927

+0

如果這個答案是有用的,那麼請upvote和/或標記爲答案。 :) – samar

0

問題是我的對象。它沒有正確實例化。我正在訪問名爲DBmiddleTier的應用程序代碼中的類來訪問數據庫並寫入圖像文件。這是我做錯了:DBMiddleTier dbmt; < -----「錯誤」。這是我做了什麼來糾正問題DBMiddleTier dbmt = new DBMiddleTier();

相關問題