代码如下:
        SqlConnection con = new SqlConnection(strConn);
        con.Open();
        SqlCommand com = new SqlCommand("select top 1 photo from employees where photo is not null", con);
        SqlDataReader dr = com.ExecuteReader();
        dr.Read();
        //Response.ContentType = "application/octet-stream";
        Response.ContentType = "image/jpeg";
        byte[] sss = (byte[])dr["photo"];
        
        Response.BinaryWrite((byte[])sss);
        Image1.Attributes.Add("src","Default3.aspx");结果:
出现了一个文件下,在文件来的下级目录才会显示图片;Documents and Settings/hm_user_026/桌面/新資料夾/1.jpg;听说这二进制是压缩了,
如何求解;

解决方案 »

  1.   

            //新建一页如photo.aspx   
            //photo.aspx.cs:
            SqlConnection con = new SqlConnection(strConn);
              con.Open();
              SqlCommand com = new SqlCommand("select top 1 photo from employees where photo is not null", con);
              SqlDataReader dr = com.ExecuteReader();
              dr.Read();
            Response.ClearContent();
              Response.ContentType = "image/jpeg";
              byte[] sss = (byte[])dr["photo"];
            //close ...
              Response.BinaryWrite((byte[])sss);        //其它页引用如 aa.aspx:
            //<html>....<img src="photo.aspx" /> 
      

  2.   

    你这个代码本来就写得有问题.
    下面这句画蛇添足:
    Image1.Attributes.Add("src","Default3.aspx");因为你前面的代码是用来直接输出二进制流,你却又在这个aspx上弄了个image控件这个文件的aspx部分不要弄任何UI相关东西,只是在CS里写上输出代码.正确方法:
    1.输出二进制图片的(也就是你写Response.BinaryWrite((byte[])sss)代码的)aspx保存为a.aspx
    2.另建一个b.aspx,在这个b.aspx中
      <img src="a.aspx" />
      

  3.   

    C:\Documents and Settings\Administrator\Local Settings\Temporary Internet Files\Content.IE5\CFRBIO1H\Default3[1].zip\Documents and Settings/hm_user_026/桌面/新資料夾\1.jpg   这是a.aspx中文件的地址....
      

  4.   

    a.aspx 运行的结果为  Default3[1].zip 这个压缩包.  压缩包的路径为:C:\Documents and Settings\Administrator\Local Settings\Temporary Internet Files\Content.IE5\CFRBIO1H\Default3[1].zip\Documents and Settings/hm_user_026/桌面/新資料夾\1.jpg 
      

  5.   

    你去了解一下关于ashx方面的知识可能管用。
      

  6.   

    关键是运行得到一个压缩文件.ZIP  图片在这个压缩包里面..而网页
      

  7.   

    你是不是打开了iis的应用服务压缩选项了打开Internet信息服务(IIS)管理器,右击"网站"->"属性",选择"服务"。在"HTTP压缩"框中不要选中"压缩应用程序文件"和"压缩静态文件";再试一下。另,你好象用的ie5,非常抱歉的是gzip技术要ie5.5以上才支持。要做多浏览器支持应用就别用太多新技术。
      

  8.   

    "a.aspx 运行的结果为 Default3[1].zip"
    且不说别的,
    a.aspx为什么会出default3?把你的a.aspx前台以及a.aspx.cs代码完整地放出来
      

  9.   

    网上找个验证码的代码  看看   就什么都明白了
       System.IO.MemoryStream ms = new System.IO.MemoryStream(); 
       ...   
       Response.ClearContent(); 
       Response.ContentType = "image/Gif"; 
       Response.BinaryWrite(ms.ToArray()); 
      

  10.   


      Default3.aspx
        protected void Page_Load(object sender, EventArgs e)
        { 
            SqlConnection con = new SqlConnection(strConn);
            con.Open();
            SqlCommand com = new SqlCommand("select top 1 photo from employees where photo is not null", con);
            SqlDataReader dr = com.ExecuteReader();
            dr.Read(); 
            Response.ClearContent();
            Response.ContentType = "image/jpeg";
            byte[] sss = (byte[])dr["photo"];        
            Response.BinaryWrite((byte[])sss);                }
    Default4.aspx <img src="Default3.aspx" alt="ss"  />
      

  11.   

    怀疑是路径问题   把两个aspx文件放到一个同一目录下,直接相对路径src="a.aspx"试试
      

  12.   

    stringReader流模式存储,Response.BinaryWrite(),输出.
      

  13.   

    你要判断流中数据格式, 
    以便得到一个正确的 mime 格式,
    才能往浏览器推数据.如何推图像数据的代码太多了.
      

  14.   

    不要使用aspx,使用ashx。如果一定要使用aspx,那么在数据数据流之前要写Response.Clear();,并且之后要写一行Response.End();因为aspx会输出许多多余的东西。
      

  15.   


    那么就应该检查其它地方,首先确保根本不去产生.zip文件(例如设置iis等的mime压缩范围仅仅限于aspx和html)。
      

  16.   

    用ashx输出图片,然后一个img的地址指向这个页面吧
      

  17.   

    可以把你的处理程序放在HttpHandler(一般处理程序.ashx)里去做,跟登录时要输入验证码原理一样public void ProcessRequest(HttpContext context)
            {
                ValidateCode img = new ValidateCode();//初始化验证码生成类
                string valid = "";//定义随机数
                MemoryStream ms = img.Create(out valid);//获取包括验证码图片的内存
                context.Response.ClearContent();//清空输出流
                //验证码存储在cookie中,供验证。
                HttpCookie cookie = new HttpCookie("img", valid);
                context.Response.Cookies.Add(cookie);
                //context.Session["img"] = valid;//验证码存储在Session中,供验证。            context.Response.ContentType = "image/png";//输出流的格式
                context.Response.BinaryWrite(ms.ToArray());//输出
                context.Response.End();
            }
    在页面中直接让img的src属性等于这个一般处理程序的路径。
    .ashx处理速度比.aspx快