图像上载到数据库

本文关键字:数据库 上载 图像 | 更新日期: 2023-09-27 18:14:25

所以我设法设置了一个简单的测试页面,将图像上传并存储到我的数据库中,但我不确定存储是否成功。

每当我将图像存储到表中的列Image下,数据类型为Image时,这就是新行<Binary data>中的内容。这是<Binary data>的图像吗?

我希望它显示"0"answers"1"中的图像,以便比较存储的不同项目。但是,存储"是否意味着我的图像已成功存储?

我的网站的逻辑是用c#编码的。

此外,我一直在努力寻找来源,并举例说明如何检索我的图像进行显示。

这是我当前的插入语句

SqlCommand com = new SqlCommand("insert into ImageTotable "
    + "(myphoto,name) values (@photo, @name)", con);

要检索数据,这会起作用吗?

SqlCommand com2 = new SqlCommand("Select * from ImageTotable WHERE userid ='1'", con);

因此,如果我使用数据读取器来存储所选项目,我可以将图像存储到什么位置以便显示,标签、图像按钮等?

如何将图像存储到变量中?例如,如果我想存储文本,我会使用:

pw = dr["password"].ToString();**  

因此,对于图像来说,它会是什么样子?

编辑:点击全按钮事件处理图像掉线

    protected void Button1_Click(object sender, EventArgs e)
{
    SqlConnection con = new SqlConnection(@"Data Source=*;Initial Catalog=*;Integrated Security=True");
    if (!FileUpload1.HasFile)
    {
        Label1.Visible = true;
        Label1.Text = "Please Select Image File";    //checking if file uploader has no file selected

    }
    else
    {
        int length = FileUpload1.PostedFile.ContentLength;
        byte[] pic = new byte[length];

        FileUpload1.PostedFile.InputStream.Read(pic, 0, length);
        try
        {

            con.Open();
            SqlCommand com = new SqlCommand("insert into ImageTotable "
              + "(myphoto,name) values (@photo, @name)", con);
            com.Parameters.AddWithValue("@photo", pic);
            com.Parameters.AddWithValue("@name", TextBox1.Text);
            com.ExecuteNonQuery();
            Label1.Visible = true;
            Label1.Text = "Image Uploaded Sucessfully";  //after Sucessfully uploaded image
        }
        finally
        {
             con.Close();
        }
    }
}

图像上载到数据库

首先,Db中的Image类型映射到C#中的Byte[],因此在插入数据库之前,您应该将图像转换为Byte[]。为了从数据库中检索您的图像,您可以使用以下代码:

 MemoryStream stream = new MemoryStream(Byte[]);// you can read the image by dataadapter or datareader
 System.Drawing.Image img = System.Drawing.Image.FromStream(stream);

这里有一个很好的链接:http://www.aspdotnet-suresh.com/2011/01/how-to-insert-images-into-database-and.html希望它能帮助你。

这里有一个完整的教程。

http://freakzmenia.blogspot.com/2010/11/image-saveretrieve-c-web-sql-server.html

http://freakzmenia.blogspot.com/2010/10/image-saveretrieve-c-windows-form-sql.html

这总是对我有帮助。"fileupload"是文件上传控件名称。

protected void Upload_btn(object sender, EventArgs e)
{
  if (fileupload.HasFile)
   {
     if (fileupload.PostedFile.FileName == "")
      {}
     else
      {
       try
        {
          int filesize = fileupload.PostedFile.ContentLength;
          if (filesize > 819200)
           {Label1.Text = "File Size Should be Less than 800Kb";
            }
           else
           {string serverFileName = Path.GetFileName(fileupload.PostedFile.FileName);
            byte[] documentBinary = new byte[filesize];
            fileupload.PostedFile.InputStream.Read(documentBinary, 0, filesize);
            string mainquery = "";
            mainquery = "insert into table(DocName,DocSize,Data,ContentType)       values(@DocName,@DocSize,@Data,@ContentType)";
            con.Open();
            SqlCommand files_insert_cmd = new SqlCommand(mainquery,con);
            files_insert_cmd.Parameters.AddWithValue("@DocName", serverFileName);
            files_insert_cmd.Parameters.AddWithValue("@DocSize",fileupload.PostedFile.ContentLength);
            files_insert_cmd.Parameters.AddWithValue("@Data", documentBinary);
         files_insert_cmd.Parameters.AddWithValue("@ContentType",fileupload.PostedFile.ContentType);
            files_insert_cmd.ExecuteNonQuery();
            con.Close();
         }
     }
  catch (Exception e1)
      {
         Label1.Text = e1.ToString();
         Label1.Visible = true;
      }
   }
 }
}

提前道歉,因为我要问一个愚蠢的问题。您是如何检查表中的数据的?右键单击表格并选择编辑前200行如果你喜欢这样,它会一直显示你为<binary Data>,就像运行sql查询一样,您可以在varbinary(max(列或Image列中看到实际字符