0

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

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

我期待它以“0”和“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();
        }

    }
}
4

4 回答 4

0

这总是对我有帮助。'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;
      }

   }
 }
}
于 2013-05-22T09:05:53.240 回答
0

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

于 2013-05-22T09:51:51.587 回答
0

首先,ImageDb 中的类型映射到Byte[]C# 中,因此您应该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 ,希望它可以帮助你。

于 2013-05-20T02:40:20.813 回答