如何保存图像数据库并将其显示在网页的面板上?

How to save an image database and display it on a panel on webpage?

我在 visual studio 中的 webform 上为图像创建了一个名为(发票)的文件夹,我想将图像的根目录保存在 MySql 数据库中并显示图像在网页的面板上。图片已保存在文件夹中,但未保存在数据库中。

我试过的代码

protected void Page_Load(object sender, EventArgs e) {

    string connection = "server=localhost; userid=   ; password=   ; database=admindb; allowuservariables=True";

    MySqlConnection cn = new MySqlConnection(connection);

    try
    {

        string sqlcmd = "SELECT PicAddress FROM InvoicesFP WHERE InvoicesFP_ID=@InvoicesFP_ID";

        cn.Open();

        MySqlCommand cmd = new MySqlCommand(sqlcmd, cn);
        cmd.CommandType = CommandType.Text;
        MySqlDataReader rdr = cmd.ExecuteReader();

        while (rdr.Read())
        {
            string url = rdr["PicAddress"].ToString();
            Image1.ImageUrl = url;
        }
    }
    catch (Exception ex)
    {
        throw ex;
    }
    cn.Close();
}

protected void Button1_Click(object sender, EventArgs e)
{
    #region fileupload
    var FileExtension = Path.GetExtension(FileUpload1.PostedFile.FileName).Substring(1);
    string SaveLocation = Server.MapPath("Invoices\") + Guid.NewGuid().ToString("N") + FileExtension;
    MySqlConnection connection = new MySqlConnection("server=localhost; userid=root; password=admin1234; database=admindb; allowuservariables=True");
    MySqlCommand cmd = new MySqlCommand();
    cmd.CommandText = "insert into invoicesfp (PicAddress), VALUES (@PicAddress)";
    cmd.CommandType = CommandType.Text;
    cmd.Connection = connection;
    cmd.Parameters.AddWithValue("PicAddress", Server.MapPath("~/Invoices"));
    cmd.Connection.Open();
    cmd.BeginExecuteNonQuery();
    cmd.Connection.Close();

    try
    {
        FileUpload1.PostedFile.SaveAs(SaveLocation);
    }
    catch (Exception ex)
    {
        if (ex is ArgumentNullException || ex is NullReferenceException)
        {
            throw ex;
        }
    }
    string PicAddress = "~/Invoices/" + SaveLocation;
}

    #endregion

}

更新

先试试这个代码,使用这个示例你不需要使用重命名方法而且无论它的扩展名是什么,它都是支持的:

#region fileupload 
var FileExtension = Path.GetExtension(FileUpload1.PostedFile.FileName).Substring(1); 
string SaveLocation = Server.MapPath("Invoices\") + Guid.NewGuid().ToString("N") + "." + FileExtension; 

try 
{ 
FileUpload1.PostedFile.SaveAs(SaveLocation); 
} 
catch (Exception ex) 
{ 
if (ex is ArgumentNullException || ex is NullReferenceException) 
{ 
throw ex; 
} 
} 
string PicAddress = "~/Invoices/" + SaveLocation; 

#endregion 

MySqlConnection connection = new MySqlConnection("server=localhost; userid=root; password=admin1234; database=admindb; allowuservariables=True"); 
MySqlCommand cmd = new MySqlCommand(); 
cmd.CommandText = "INSERT INTO InvoicesFP (PicAddress) VALUES (@PicAddress)"; 
cmd.CommandType = CommandType.Text; 
cmd.Connection = connection; 
cmd.Parameters.AddWithValue("PicAddress", "PicAddress"); 
cmd.Connection.Open(); 
cmd.ExecuteNonQuery(); 
cmd.Connection.Close(); 

然后在您的 page_load 中,您可以调用 Select 查询以获取地址数据库并将其传递给控制,例如:

   const string DB_CONN_STR = "Server=etc;Uid=etc;Pwd=etc;Database=etc;";

    MySqlConnection cn = new MySqlConnection(DB_CONN_STR);

    try {

        string sqlCmd = "SELECT PicAddress FROM [YourTable] where Id == PicAddress id";

        cn.Open(); // have to explicitly open connection (fetches from pool)

        MySqlCommand cmd = new MySqlCommand(sqlCmd, cn);
        cmd.CommandType = CommandType.Text;
        MySqlDataReader rdr = cmd.ExecuteReader();

        while(rdr.Read())
        {
            string url = rdr["Name of the Field Assuming PicAddress"].ToString(); 
            Image1.ImageUrl = url; 
        }
    }
    catch(Exception ex)
    {
        throw ex; 
    }

仅此而已 - 快乐编码