2017-04-07 11 views
2
protected void upimg_about_Click(object sender, EventArgs e) 
{    
    con.Open(); 
    string sqlQuery = " UPDATE [dbo].[tbldetails] SET [image][email protected],[image2][email protected] WHERE [email protected]"; 
    SqlCommand cmd2 = new SqlCommand(sqlQuery, con); 
    cmd2.Parameters.AddWithValue("@id", Session["email"].ToString()); 

    int img = Image1.PostedFile.ContentLength; 
    int img2 = Image2.PostedFile.ContentLength; 

    byte[] msdata = new byte[img]; 
    byte[] msdata2 = new byte[img2]; 

    Image1.PostedFile.InputStream.Read(msdata, 0, img); 
    Image2.PostedFile.InputStream.Read(msdata2, 0, img2); 

    cmd2.Parameters.AddWithValue("@image", msdata); 
    cmd2.Parameters.AddWithValue("@image2", msdata2); 

    if (con.State == ConnectionState.Closed) 
    { 
     con.Open(); 
    } 
    cmd2.ExecuteNonQuery(); 

    con.Close(); 

    data1.Text="Image Updated Successfully";  
} 

これは、データベースのイメージを更新するために使用しているコードです。イメージの更新と取得(Asp.net c#)

ユーザは必要に応じて画像を更新し(firstpage.aspxなど)、次のページ(nextpage.aspx)で画像を取得できます。

しかし、問題は次のとおりです。ユーザーが1つの画像だけを更新し、その画像をアップロードして更新ボタンをクリックしたとし、次のページの画像を取得するときに更新された画像は見えますが、すでにデータベースに存在していません。私は確信していませんが、更新中に他のfileuploadが空ですなぜこれが起こっているのですか?それを行うための他の方法はありますか?

PS:firstpage.aspxにテキストボックスがあります。このテキストボックスには、すでにデータベースに格納されているテキストを取得しているため、ユーザーが変更を行いたい場合は簡単に行うことができます。

TextBox1.Text = dr["name"].ToString(); 
TextBox2.Text = dr["address"].ToString(); 

したがって、以前に送信した画像パスを取得することは可能ですか?または、ユーザーが単一のイメージを更新でき、検索中に両方のイメージを取り出すことができますか?

ありがとうございました! :)

答えて

1

一度に1枚の画像をDBに送信できるようにコードを分割してください。次に、対応するFileUploadとSQL列名を関数に渡します。 FileUploadにファイルが含まれているかどうかに応じて条件付きで新しいファイルをデータベースに送信します。これはHasFileプロパティを調べることで確認できます。

protected void upimg_about_Click(object sender, EventArgs e) 
{    
    // make sure at least 1 file 
    if (!Image1.HasFile && !Image2.HasFile) 
    { 
     data1.Text="No Images Uploaded"; 
     return; 
    } 

    con.Open(); 
    UploadImage(Image1, "[image]"); 
    UploadImage(Image2, "[image2]"); 
    con.Close(); 

    data1.Text = "Image Updated Successfully";  
} 

void UploadImage(FileUpload fileUpload, string columnName) 
{ 
    if (!fileUpload.HasFile) 
    { 
     return; 
    } 

    string sqlQuery = "UPDATE [dbo].[tbldetails] SET " + columnName + "[email protected] WHERE [email protected]"; 
    SqlCommand cmd = new SqlCommand(sqlQuery, con); 
    cmd.Parameters.AddWithValue("@id", Session["email"].ToString()); 

    int img = fileUpload.PostedFile.ContentLength; 
    byte[] msdata = new byte[img]; 
    fileUpload.PostedFile.InputStream.Read(msdata, 0, img); 
    cmd.Parameters.AddWithValue("@image", msdata); 

    cmd.ExecuteNonQuery(); 
} 
+0

画像のアップロード画像がアップロードされていない場合でも正常に更新されます – Skullcandy

+0

画像はデータベースに保存されていますか?ここで論理的なエラーがない限り( '!Image1.HasFile &&!Image2.HasFile')、アップロードされた画像がない場合、関数は終了しなければなりません。 – dana

+0

こんにちは、それは働いてくれてありがとう! – Skullcandy

関連する問題