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

标签 c# sql asp.net

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

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

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

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

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

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

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

谢谢! :)

最佳答案

分解您的代码,以便您可以一次将 1 张图像发送到数据库。然后将相应的 FileUpload 和 SQL Column name 传递给您的函数。根据 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();
}

关于c# - 更新和检索图像 (Asp.net c#),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43284177/

相关文章:

c# - 升级到 MVC3。找不到 ashx 资源。路由问题?

c# - C# 中 HTML 换行符的常量?

php - SQL 从多个表中选择 *

c# - 更改 outlook MailItem 图标

c# - 在每一页检查 session ?

mysql - 合并 3 个 SQL 表(一张需要搜索,一张需要平均值,一张需要计数)

sql - Postgresql插入触发器连接

c# - 关于 "using"关键字的基本 C#

c# - Flickr 'Invalid auth token (98)' 从 Asp.net 应用程序上传视频

c# - 更改动态创建的文本框的工具提示样式?