gpt4 book ai didi

c# - 更新数据库 Image 只存储 0x

转载 作者:太空宇宙 更新时间:2023-11-03 15:47:03 25 4
gpt4 key购买 nike

我有一个存储用户信息的表,它是通过加载一个 XML 文件来填充的。在该表中,我有一个图像类型列,用于在 XML 文件中设置为“空”的所有用户。当我尝试更新该列并设置图像时,问题就来了,它只存储“0x”。

这是表格:

create table User(
ID INTEGER PRIMARY KEY,
name VARCHAR(50),
foto IMAGE,
email VARCHAR(100))

这是我的更新代码:

protected void addFoto_Click(object sender, EventArgs e)
{
Byte[] imgByte = null;
if (file_upload.PostedFile != null)
{
HttpPostedFile File = file_upload.PostedFile;
File.InputStream.Position = 0;
imgByte = new Byte[File.ContentLength];
File.InputStream.Read(imgByte, 0, File.ContentLength);
}
string sql = "update User set foto = @foto where email= @email";
using(SqlCommand cmd = new SqlCommand(sql, con.getConexion()))
{
cmd.Parameters.AddWithValue("@email", Txtemail.Text.ToString());
cmd.Parameters.AddWithValue("@foto", imgByte);
con.open();
cmd.ExecuteNonQuery();
con.close();
}
}

我尝试添加

File.InputStream.Position = 0;

作为这篇文章的答案,但仍然没有用。

Can't save byte[] array data to database in C#. It's saving 0x

我还尝试使用以下代码使用列类型 VARBINARY(MAX):

string sql = "update User set foto = @foto where email= @email";
using (SqlCommand cmd = new SqlCommand(sql, con.getConexion()))
{
Stream fs = file_upload.PostedFile.InputStream;
BinaryReader br = new BinaryReader(fs);
Byte[] bytes = br.ReadBytes((Int32)fs.Length);
cmd.Parameters.AddWithValue("@email", Txtemail.Text.ToString());
cmd.Parameters.Add("@foto", SqlDbType.Binary).Value = bytes;
con.open();
cmd.ExecuteNonQuery();
con.close();
}

刚刚存储了 0x000000... 最后,我还尝试直接添加一张图片:

System.Drawing.Image imag = System.Drawing.Image.FromStream(file_upload.PostedFile.InputStream);
cmd.Parameters.Add("foto", SqlDbType.Binary, 0).Value = ConvertImageToByteArray(imag, System.Drawing.Imaging.ImageFormat.Jpeg);

没有结果。

以下是调试时 file_upload 的值:

Debug console of the file_upload

我觉得奇怪的是它有一个已发布的文件但没有字节......

如果有人能告诉我我做错了什么,我将不胜感激,如果我的英语不完美,请原谅我。

最佳答案

问题是我在 Page_Load 中执行了一个 PostBack 刷新页面以显示文件名,但同时它将 PostedFile 重置为空。

我的解决方案是制作一个全局 HttpPostedFile 变量,将发布的文件存储在 PostBack 中以供将来使用。

关于c# - 更新数据库 Image 只存储 0x,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27738720/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com