更新和检索图像 (Asp.net c#)


protected void upimg_about_Click(object sender, EventArgs e)
{               
con.Open();
string sqlQuery = " UPDATE [dbo].[tbldetails] SET [image]=@image,[image2]=@image2 WHERE id=@id";
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";    
}

这是我用来更新数据库中图像的代码。

用户在需要时可以更新图像(例如:在第一页.aspx中),并可以在下一页(下一页.aspx)中检索它。

但问题是:假设用户只想更新单个图像,他/她上传了图像并单击更新按钮,当在下一页中检索图像时,更新的图像是可见的,但数据库中已经存在的图像不是。我不确定,但在更新过程中,另一个文件上传为空,这是为什么会发生这种情况吗?还有其他方法可以做到吗?

PS:我在第一页中有文本框.aspx在其中检索他/她已经放入数据库的文本,因此当用户想要进行更改时,可以轻松完成。

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

那么,是否可以检索用户之前提交的图像路径?或者用户可以更新单个图像并在检索过程中可以检索两个图像的任何方式?

谢谢!:)

分解代码,以便一次可以向数据库发送 1 张图像。 然后将相应的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 + "=@image WHERE id=@id";
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();
}

最新更新