Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/29.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何将数据库中的二进制列读入asp.net页面上的图像?_C#_Asp.net - Fatal编程技术网

C# 如何将数据库中的二进制列读入asp.net页面上的图像?

C# 如何将数据库中的二进制列读入asp.net页面上的图像?,c#,asp.net,C#,Asp.net,我想从数据库中读取存储在二进制字段中的图像并显示图像 while (reader.Read()) { byte[] imgarr = (byte[])reader["file"]; Stream s = new MemoryStream(imgarr); System.Drawing.Image image = System.Drawing.Image.FromStream(s); Graphics g = Graphi

我想从数据库中读取存储在二进制字段中的图像并显示图像

 while (reader.Read())
    {
        byte[] imgarr = (byte[])reader["file"];

        Stream s = new MemoryStream(imgarr);
        System.Drawing.Image image = System.Drawing.Image.FromStream(s);
        Graphics g = Graphics.FromImage(image);
        g.DrawImage(image, new Point(400, 10));
        image.Save(Response.OutputStream, ImageFormat.Jpeg);
        g.Dispose();
        image.Dispose();
    }
    con.Close();
这段代码不起作用:

 System.Drawing.Image image = System.Drawing.Image.FromStream(s);
我从中尝试了代码 我也犯了同样的错误“参数无效”。 也许我不知道什么,sql server或webconfig中的某些设置或其他内容。还有谁有从数据库获取图像的经验

该参数无效,原因是 错误消息。 db表包含数据。 我做错了什么


我觉得你说的那句话不管用。由于您没有说明图像的类型,可能是不支持的格式

否则,我将冒险猜测实际问题在

byte[] imgarr = (byte[])reader["file"];

字节数组没有包含您认为应该包含的数据。

您所说的无效行在我看来是正确的。由于您没有说明图像的类型,可能是不支持的格式

否则,我将冒险猜测实际问题在

byte[] imgarr = (byte[])reader["file"];

而且字节数组不包含您认为应该包含的数据。

通常将流位置设置为0会起到以下作用:

Stream s = new MemoryStream(imgarr);
s.Position = 0;

通常,将流位置设置为0可以实现以下目的:

Stream s = new MemoryStream(imgarr);
s.Position = 0;

您可能希望签出包含您正在查找的某些内容的文件

conn.Open();
SqlDataReader rdr = cmd.ExecuteReader();
if (rdr.Read())
{
    ... other code 

    byte[] filebytes = (byte[])rdr[FILE_STREAM];
    result.FileBytes = new byte[filebytes.Length];
    Array.Copy(filebytes, result.FileBytes, filebytes.Length);
}
具有文件写入代码

response.ContentType = file.ContentType;

byte[] buffer = new byte[file.ByteCount];
file.Read(buffer, 0, file.ByteCount);
response.BinaryWrite(buffer);

只要您在响应上设置了内容类型,并在响应中写入文件,您就不需要创建图像然后保存它(除非您正在对其进行编辑)。

您可能希望签出文件中包含您要查找的内容

conn.Open();
SqlDataReader rdr = cmd.ExecuteReader();
if (rdr.Read())
{
    ... other code 

    byte[] filebytes = (byte[])rdr[FILE_STREAM];
    result.FileBytes = new byte[filebytes.Length];
    Array.Copy(filebytes, result.FileBytes, filebytes.Length);
}
具有文件写入代码

response.ContentType = file.ContentType;

byte[] buffer = new byte[file.ByteCount];
file.Read(buffer, 0, file.ByteCount);
response.BinaryWrite(buffer);

只要您在响应上设置了内容类型,并在响应中写入文件,您就不需要创建图像然后保存它(除非您正在对其进行编辑)。

“不起作用”不是一个非常详细的诊断。到底发生了什么?是否正在引发异常?如果是这样,抛出的对象是什么和在哪里?您是否检查了
imgarr
是否保存了任何数据?始终将IDisposable对象包装在“使用”状态中。“不起作用”不是一个非常详细的诊断。到底发生了什么?是否正在引发异常?如果是这样,抛出的对象是什么和在哪里?您是否检查了
imgarr
是否保存了任何数据?始终将IDisposable对象包装在“using”语句中。