图像上载到数据库
本文关键字:数据库 上载 图像 | 更新日期: 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列中看到实际字符