当前位置:编程学习 > C#/ASP.NET >>

从数据库中读出来的图片显示不了

Response.ClearContent();
 Response.ContentType = "image/jpeg";      
 Response.BinaryWrite((byte[]数据库中的blob);
但是页面上显示的是“System.Byte[]“,问题出在哪了? --------------------编程问答-------------------- 你怎么显示的呢 --------------------编程问答-------------------- 编码格式的问题吧
--------------------编程问答-------------------- 直接这样输出 不可以吧~~~ --------------------编程问答-------------------- 就是想读取出显示在一个image控件中
--------------------编程问答-------------------- 我一般都是右键属性看看路径错误的图片。
在右键属性看看同级别正确图片的路径。
1.对比下路径错误
2.如果页面有输出图片地址,请仔细核对第一条。(你单纯的输出一下图片地址看看再说) --------------------编程问答-------------------- 那样没有问题,可是现在从数据库里读出的二进制数组形式,怎么显示在image控件中呢
--------------------编程问答-------------------- 大虾都哪去了,赶快现身吧!
--------------------编程问答-------------------- 数据库中存的是路径还是二进制文件? --------------------编程问答-------------------- 你的数据库里可能存错了东西...存放的是"System.Byte[]",而不是图像 --------------------编程问答-------------------- 楼主还是先确定图片存没存到数据库里了,我和9楼的想法一样 --------------------编程问答-------------------- 是不是路径在读取的时候写的有问题? --------------------编程问答-------------------- 二进制方法,图片已经存入数据库了,图片存放的时候把图片变成二进制数组放入,读出来后再转化成图片的,这些都没有问题
--------------------编程问答-------------------- 等待的大侠,快快现身吧,有没有做过这方面的朋友啊 --------------------编程问答-------------------- 你把读取图片的ashx页面代码贴出来看看 --------------------编程问答--------------------
引用 13 楼 handoudouhao 的回复:
等待的大侠,快快现身吧,有没有做过这方面的朋友啊

这事用得着麻烦大侠么?给你一段现成的代码,自己对照着找找问题在哪
        public void ProcessRequest(HttpContext context)
        {
            string strID = context.Request.QueryString["ProductID"];
            if (strID == string.Empty)
                return;

            string strConn = WebConfigurationManager.ConnectionStrings["StickerStick"].ToString();
            SqlConnection conn = new SqlConnection(strConn);

            SqlCommand comm = new SqlCommand();
            comm.Connection = conn;
            comm.CommandText = "select top 1 Picture from Pictures where ProductID=@ProductID";
            comm.Parameters.Add(new SqlParameter("@ProductID", strID));

            int nRead = 0;
            int nFrom = 0;
            byte[] buffer = new byte[2048];

            try
            {
                conn.Open();
                SqlDataReader reader = comm.ExecuteReader();
                
                reader.Read();
                do
                {
                    nRead = (int)reader.GetBytes(0, nFrom, buffer, 0, 2048);
                    nFrom += nRead;

                    context.Response.BinaryWrite(buffer);
                } while (nRead == 2048);

                reader.Close();
            }
            finally
            {
                conn.Close();
            }
        }
--------------------编程问答-------------------- 15楼谢谢。但咱们的代码本质是一样的啊。 --------------------编程问答--------------------
引用 16 楼 handoudouhao 的回复:
15楼谢谢。但咱们的代码本质是一样的啊。

是啊,这功能总共就几十行代码,大家写出来的都差不多。你不把你的代码贴出来没人知道毛病出在哪,一开始贴的那三行没有任何意义,所以我只能说你自己对照着找问题 --------------------编程问答-------------------- 需要加入一个辅助页面 
public partial class Picture : System.Web.UI.Page  
{
...... Response.BinaryWrite(....);  
}
//
Image.ImageUrl=”Picture.aspx”;   --------------------编程问答-------------------- [yabao=][/yabao] --------------------编程问答-------------------- MemoryStream memoryStream = new MemoryStream();

memoryStream.Read(byte[]数据库中的blob,0,blob.length);


-------------------------------------------------------------------------


                MemoryStream memoryStream = new MemoryStream(Binary);//定义并实例化一个内存流,来存放上传的图片二进制流
                FileStream fileStreams = new FileStream(FileName, FileMode.Create); //把内存里的文件写入文件流

                memoryStream.WriteTo(fileStreams);

                memoryStream.Close();
                fileStreams.Close();

                Binary = null;
                memoryStream = null;

--------------------编程问答--------------------  


MemoryStream memoryStream = new MemoryStream();
memoryStream.Read(byte[]数据库中的blob,0,blob.length); 读取图片内容到内存

System.Drawing.Image bitmap = new System.Drawing.Bitmap(memoryStream ,true); 生成一张图片



--------------------编程问答-------------------- 看下路径?看下源码里面路径对么 --------------------编程问答-------------------- 页面的写法:
 <img src="xx.ashx" /> 
页面也要用img标签显示 --------------------编程问答-------------------- 页面的写法:
 <img src="xx.ashx" /> 
页面也要用img标签显示  --------------------编程问答--------------------
存如数据库
   if (this.fileCoverImage.HasFile)
                    {
                        info.Photo = this.fileCoverImage.FileBytes;
                    }


显示
  <td rowspan="5">
            <asp:Image ID="myImg" ImageUrl= "PictureShow.ashx?EmployeeId=id(id是多少。。。)"  Width="150" Height="150" runat="server" />
        </td>


ashx

        public void ProcessRequest(HttpContext context)
        {

            context.Response.ContentType = "image/gif";

            int employeedid = DataTypeHelper.GetInt(context.Request.QueryString["EmployeeId"]);
            using (ErpEntities db = new ErpEntities())
            {
                Employee info = db.Employees.FirstOrDefault(o => o.EmployeeId == employeedid);
                if (info != null && info.Photo !=null)
                {
                    context.Response.BinaryWrite(info.Photo);
                }
            }
        }
补充:.NET技术 ,  ASP.NET
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,