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

时间:2016-12-25 10:04:38

标签: c# mysql asp.net visual-studio-2012

我在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

}

1 个答案:

答案 0 :(得分:0)

<强>更新

首先尝试使用此代码,使用此示例,您不需要使用重命名方法,无论其扩展名是什么,都支持:

#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 Query来获取Address out数据库并将其传递给控制,例如:

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

多数人 - 快乐编码