怎样用asp.net(C#)读取oracle数据库中的图片文件并显示?

wlwhhy 2006-12-20 10:17:07
byte[] bData = null;
string sContentType = "";
string ID = "";
ID = Request["ID"].ToString();
WdXxDAL wdxx = new WdXxDAL();
DataSet ds = wdxx.GetItemByWDBH(ID);
DataRow dr = ds.Tables[0].Rows[0];
bData = (byte[])dr["WDNR"];


string FileType = dr["wdlx"].ToString().ToLower();

switch (FileType)
{
case "doc":
sContentType = "application/msword";
break;
case "xls":
sContentType = "application/vnd.ms-excel";
break;
case "asf":
sContentType = "video/x-ms-asf";
break;
case "ppt":
sContentType = "application/ppt";
break;
case "avi":
sContentType = "video/avi";
break;
case "zip":
sContentType = "application/zip";
break;
case "gif":
sContentType = "image/gif";
break;
case "bmp":
sContentType = "image/bmp";
break;
case "jpg":
sContentType = "image/jpeg";
break;
case "jpeg":
sContentType = "image/jpeg";
break;
case "wav":
sContentType = "audio/wav";
break;
case "mp3":
sContentType = "audio/mpeg3";
break;
case "mpeg":
sContentType = "video/mpeg";
break;
case "mpg":
sContentType = "video/mpeg";
break;
case "rtf":
sContentType = "application/msword";
break;
case "htm":
sContentType = "text/html";
break;
case "html":
sContentType = "text/html";
break;
//case "txt":
// ContentType = "text/plain";
// break;
//case "dwf":
// ContentType = "application/x-dwf";
// break;
default:
sContentType = "";
break;

}

if (sContentType != "")
{

Response.ContentType = sContentType;
Response.BinaryWrite(bData);

}
为什么图片显示不出来,请大侠指点?
vs2005 oracle 9i 我用的是C# 操作系统xp sp2
...全文
317 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
wlwhhy 2006-12-21
  • 打赏
  • 举报
回复
我自已顶一下
wlwhhy 2006-12-20
  • 打赏
  • 举报
回复
using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using System.Data.OracleClient;
using Microsoft.ApplicationBlocks.Data;
using GotDotNet.ApplicationBlocks.Data;
using Utility;

namespace DAL
{
public class WdXxDAL
{

private const string SQL_SELECT = "SELECT wdbh,wdmc,wdlx,dwf,wdnr,lbdm,wdrq,wdzt,gdr FROM wdxx WHERE ";
private const string SQL_SELECT_ALL = "1=1 ";
private const string SQL_WDBH = " wdbh=@WDBH ";
private const string SQL_LBDM = " lbdm=@LBDM";

private const string SQL_ORDER = " Order By WDBH ";

private const string PARM_LBDM = "@LBDM";
private const string PARM_WDBH = "@WDBH";


public WdXxDAL()
{
}
public DataSet GetItemByCustom(OracleParameter[] parms, string strQuery)
{
return OrlHelper.ExecuteDataset(Utility.Global.ConnString, CommandType.Text, strQuery, parms);
}

private OracleParameter[] GetByLBDMParameters()
{
OracleParameter[] parms;
parms = new OracleParameter[] {
new OracleParameter(PARM_LBDM,OracleType.VarChar )
};

return parms;
}
private void SetByLBDMParameters(OracleParameter[] parms, string LBDM)
{
parms[0].Value = LBDM;

}
public DataSet GetItemByLBDM(string LBDM)
{

OracleParameter[] parms = GetByLBDMParameters();
SetByLBDMParameters(parms, LBDM);

string strQuery = SQL_SELECT + SQL_LBDM + SQL_ORDER;


return OrlHelper.ExecuteDataset(Utility.Global.ConnString, CommandType.Text, strQuery, parms);
}


private OracleParameter[] GetByWDBHParameters()
{
OracleParameter[] parms;
parms = new OracleParameter[] {
new OracleParameter(PARM_WDBH,OracleType.VarChar )
};

return parms;
}
private void SetByWDBHParameters(OracleParameter[] parms, string ID)
{
parms[0].Value = ID;

}
public DataSet GetItemByWDBH(string WDBH)
{

OracleParameter[] parms = GetByWDBHParameters();
SetByWDBHParameters(parms, WDBH);
string strQuery = SQL_SELECT + SQL_WDBH + SQL_ORDER;
return OrlHelper.ExecuteDataset(Utility.Global.ConnString, CommandType.Text, strQuery, parms);
}
}

}
wlwhhy 2006-12-20
  • 打赏
  • 举报
回复
我的类没有问题,我把图片也读出来了,而且我把bData写到硬盘上以后,发现它已经不能被看图软件打开(acdsee打开什么也没有),这是为什么,难道我读的不对吗,我想没有错啊,而且bdata的长度和图片大小是一样的啊?
大侠们,帮助啊
mistysunlight 2006-12-20
  • 打赏
  • 举报
回复
http://www.cnblogs.com/pipisong/archive/2005/03/28/127120.aspx
这是个C#读库中的图片的例子,你看看
我也一时间不知道你的问题,看你代码好像没有问题,除了你那个类~
------------
睡觉...
mistysunlight 2006-12-20
  • 打赏
  • 举报
回复
保存到本地试试看看是什么东西
mistysunlight 2006-12-20
  • 打赏
  • 举报
回复
你直接打开页面看有什么东西没有?
要不直接输出看看
按理说应该可以啊,我也用过下面这种方法(这非我创的源码)
Do While (myDtaReader.Read())
Response.BinaryWrite(myDtaReader.Item("WDNR"))
Loop
wlwhhy 2006-12-20
  • 打赏
  • 举报
回复
就是一个方形的X,
mistysunlight 2006-12-20
  • 打赏
  • 举报
回复
那显示了点什么东西?

62,243

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

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

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

试试用AI创作助手写篇文章吧