高分!用ASP.NET显示数据库图片问题!

fq_ln 2003-07-28 02:49:11
我用SqlServer存储图片,然后把它显示到网页上来

要解决的问题是:

直接显示图像我是会的
但是怎么样才能够再网页上同时显示普通文本和数据库中的图像?

这个问题我一直没有能够解决,希望大家帮帮忙吧!
先谢谢啦!^_^
...全文
426 8 打赏 收藏 举报
写回复
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
老赵说高考 2003-07-29
  • 打赏
  • 举报
回复
是否可以该用只存储图片的路径呢,这样的话要想都显示在一个页面上应该会比较容易的。
kedy211 2003-07-29
  • 打赏
  • 举报
回复
没有人有个好的办法吗?

谢谢了
!
fengyuyan 2003-07-29
  • 打赏
  • 举报
回复
main.aspx

<%@ Page language="c#" Codebehind="main.aspx.cs" AutoEventWireup="false" Inherits="datagrid.WebForm1" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
<HTML>
<HEAD>
<title>WebForm1</title>
<meta name="vs_showGrid" content="False">
<meta name="GENERATOR" Content="Microsoft Visual Studio .NET 7.1">
<meta name="CODE_LANGUAGE" Content="C#">
<meta name="vs_defaultClientScript" content="JavaScript">
<meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
</HEAD>
<body MS_POSITIONING="GridLayout">
<form id="Form1" method="post" runat="server">
<FONT face="宋体">
<asp:DataGrid id="DataGrid1" runat="server" Width="280px" AutoGenerateColumns="False">
<Columns>
<asp:BoundColumn DataField="name"></asp:BoundColumn>
<asp:TemplateColumn>
<ItemTemplate>
<asp:Image ImageAlign =Middle ImageUrl ='show.aspx?id=<%#(DataBinder.Eval(Container.DataItem,"id") %>' Runat =server />
</ItemTemplate>
</asp:TemplateColumn>
<asp:BoundColumn DataField="addtime"></asp:BoundColumn>
</Columns>
</asp:DataGrid></FONT>
</form>
</body>
</HTML>

main.aspx.cs

using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using System.Data.SqlClient;

namespace datagrid
{
/// <summary>
/// WebForm1 的摘要说明。
/// </summary>
public class WebForm1 : System.Web.UI.Page
{
protected System.Web.UI.WebControls.DataGrid DataGrid1;

private void Page_Load(object sender, System.EventArgs e)
{
// 在此处放置用户代码以初始化页面
string connstr="server=server;uid=sa;pwd=;database=database";
SqlConnection conn=new SqlConnection(connstr);
SqlCommand cmd =new SqlCommand("sle_image",conn);
cmd.CommandType=CommandType.StoredProcedure;
conn.Open();
//conn.ConnectionTimeout =30;
SqlDataAdapter da = new SqlDataAdapter();
da.SelectCommand =cmd;
DataSet ds =new DataSet();
da.Fill(ds);
DataGrid1.DataSource =ds.Tables[0].DefaultView;
DataGrid1.DataBind();
}

#region Web 窗体设计器生成的代码
override protected void OnInit(EventArgs e)
{
//
// CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
//
InitializeComponent();
base.OnInit(e);
}

/// <summary>
/// 设计器支持所需的方法 - 不要使用代码编辑器修改
/// 此方法的内容。
/// </summary>
private void InitializeComponent()
{
this.Load += new System.EventHandler(this.Page_Load);

}
#endregion

}
}

show.aspx

是一个空文档
<%@ Page language="c#" Codebehind="show.aspx.cs" AutoEventWireup="false" Inherits="datagrid.show" %>

show.aspx.cs

using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Data.SqlClient;
using System.Data.SqlTypes;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;

namespace datagrid
{
/// <summary>
/// show 的摘要说明。
/// </summary>
public class show : System.Web.UI.Page
{
private void Page_Load(object sender, System.EventArgs e)
{
// 在此处放置用户代码以初始化页面
string id=Request["id"];
string connstr="server=server;uid=sa;pwd=;database=database";
SqlConnection conn=new SqlConnection(connstr);
SqlCommand cmd =new SqlCommand("show_image",conn);
cmd.CommandType=CommandType.StoredProcedure;
SqlParameter picid =new SqlParameter("@id",SqlDbType.Int,4);
picid.Value =Convert.ToInt32(id);
picid.Direction =ParameterDirection.Input;
cmd.Parameters.Add(picid);
conn.Open();
SqlDataReader dr = cmd.ExecuteReader();
while(dr.Read())
{
byte[] buffer =(byte[])dr[0];
Response.ContentType=(string)dr[1];
Response.BinaryWrite(buffer);
Response.Flush();
}
}

#region Web 窗体设计器生成的代码
override protected void OnInit(EventArgs e)
{
//
// CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
//
InitializeComponent();
base.OnInit(e);
}

/// <summary>
/// 设计器支持所需的方法 - 不要使用代码编辑器修改
/// 此方法的内容。
/// </summary>
private void InitializeComponent()
{
this.Load += new System.EventHandler(this.Page_Load);
}
#endregion
}
}
fq_ln 2003-07-28
  • 打赏
  • 举报
回复
欢迎大家来讨论!!
fq_ln 2003-07-28
  • 打赏
  • 举报
回复
是啊是啊

如果非要这么做,就是把数据库里的图片再生成临时文件,然后送到前面。
但是这么做的问题就更严重了,你得考虑这些垃圾如何处理。
我还不想把我的这些小图片存成文件,因为这样我没有办法来处理这些图片的安全问题
真伤脑筋啊!
river168 2003-07-28
  • 打赏
  • 举报
回复
跟我的想法一样, 如果图片另链到一个文件来显示我也会. 但是我把对象类化了.图片的二进制数据也取到类里了,如果另开一个文件来显示图片,那我这个类里的字段不是白取了吗,这个类也不完整了.
crashloopbackoff 2003-07-28
  • 打赏
  • 举报
回复
gz
panyee 2003-07-28
  • 打赏
  • 举报
回复
那样好像不行, 图片和文件的Content-Type不一样

前者是text/html,后者是image/gif或其它几种图片,

得分开两个页面

一个显示文字和一个<img src=showimg.aspx?id=1>

另一个showimg.aspx专门来显示图片

相关推荐
发帖
.NET社区

6.1w+

社区成员

.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
帖子事件
创建了帖子
2003-07-28 02:49
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。