zoukankan
html css js c++ java
sql server读取图片类型
Page.Response.BufferOutput
=
true
;
Page.Response.ContentEncoding
=
Encoding.Default;
Page.Response.Charset
=
"
GB2312
"
;
Page.Response.ContentType
=
"
image/jpeg
"
;
//
这里如果是图片是jpeg或jpg类型的这么写,如果是bmp的写成"image/bmp",gif的为"image/gif"
//
下面是输出图片过程(这是我原来写过的一部分代码)
private
void
ShowImage(
string
id,
string
TableName)
//
ID表示图片在TableName表中的ID
{
int
len
=
4096
;
string
conn
=
""
;
//
连接字符串
SqlConnection sqlconn
=
new
SqlConnection(conn);
sqlconn.Open();
string
sText
=
"
declare @id varchar(20);
"
;
sText
+=
"
set @id='
"
+
id
+
"
';
"
;
sText
+=
"
select @image=textptr(image),@datalen=datalength(image) from
"
+
TableName
+
"
where id=@id
"
;
SqlCommand sqlcmd
=
new
SqlCommand(sText,sqlconn);
SqlParameter ptrParam
=
sqlcmd.Parameters.Add(
"
@image
"
,SqlDbType.Binary,
16
);
ptrParam.Direction
=
ParameterDirection.Output;
SqlParameter datalenParam
=
sqlcmd.Parameters.Add(
"
@datalen
"
,SqlDbType.Int);
datalenParam.Direction
=
ParameterDirection.Output;
sqlcmd.ExecuteNonQuery();
int
datalen
=
int
.Parse(datalenParam.Value.ToString());
datalen
-=
3
;
//
去除掉'0x0'
if
(datalen
<
0
)
{
Response.Write(
"
<script>alert('文档数据不存在,请核查是否由于错误操作删除了文档数据!')</script>
"
);
return
;
}
if
(datalen
<
len)
sText
=
"
readtext
"
+
TableName
+
"
.image @point @offset
"
+
datalen;
else
sText
=
"
readtext
"
+
TableName
+
"
.image @point @offset
"
+
len;
sqlcmd
=
new
SqlCommand(sText,sqlconn);
SqlParameter ptrParam1
=
sqlcmd.Parameters.Add(
"
@point
"
,SqlDbType.Binary,
16
);
ptrParam1.Value
=
ptrParam.Value;
SqlParameter offParam
=
sqlcmd.Parameters.Add(
"
@offset
"
,SqlDbType.Int);
offParam.Value
=
0
;
Stream outStream
=
Page.Response.OutputStream;
BinaryWriter bw
=
new
BinaryWriter(outStream,Encoding.Default);
byte
[] buffer
=
null
;
if
(datalen
<
len)
buffer
=
new
byte
[datalen];
else
buffer
=
new
byte
[len];
long
retval
=
0
;
int
offset_ctr
=
0
;
SqlDataReader dr
=
sqlcmd.ExecuteReader(CommandBehavior.SequentialAccess);
try
{
dr.Read();
if
(datalen
<
len)
retval
=
dr.GetBytes(
0
,
0
,buffer,
0
,datalen);
else
retval
=
dr.GetBytes(
0
,
0
,buffer,
0
,len);
while
(retval
>
0
)
{
if
(datalen
>
2
*
len)
{
bw.Write(buffer);
bw.Flush();
offset_ctr
+=
len;
dr.Close();
offParam.Value
=
offset_ctr;
dr
=
sqlcmd.ExecuteReader(CommandBehavior.SequentialAccess);
dr.Read();
retval
=
dr.GetBytes(
0
,
0
,buffer,
0
,len);
datalen
-=
len;
}
else
if
(datalen
>
len)
{
bw.Write(buffer);
bw.Flush();
datalen
-=
len;
offset_ctr
+=
len;
buffer
=
new
byte
[datalen];
dr.Close();
sText
=
"
readtext
"
+
TableName
+
"
.image @point
"
+
offset_ctr
+
"
"
+
datalen;
sqlcmd
=
new
SqlCommand(sText,sqlconn);
SqlParameter ptr
=
sqlcmd.Parameters.Add(
"
@point
"
,SqlDbType.Binary,
16
);
ptr.Value
=
ptrParam1.Value ;
dr
=
sqlcmd.ExecuteReader(CommandBehavior.SequentialAccess);
dr.Read();
retval
=
dr.GetBytes(
0
,
0
,buffer,
0
,datalen);
}
else
{
bw.Write(buffer);
bw.Flush();
offset_ctr
+=
datalen;
datalen
=
0
;
buffer
=
new
byte
[datalen];
dr.Close();
sText
=
"
readtext
"
+
TableName
+
"
.image @point
"
+
offset_ctr
+
"
"
+
datalen;
sqlcmd
=
new
SqlCommand(sText,sqlconn);
SqlParameter ptr
=
sqlcmd.Parameters.Add(
"
@point
"
,SqlDbType.Binary,
16
);
ptr.Value
=
ptrParam1.Value ;
offset_ctr
+=
datalen;
dr
=
sqlcmd.ExecuteReader(CommandBehavior.SequentialAccess);
dr.Read();
retval
=
dr.GetBytes(
0
,
0
,buffer,
0
,datalen);
}
}
Response.Flush();
bw.Close();
outStream.Close();
}
catch
(Exception ex)
{
string
ss
=
ex.Message ;
}
Response.End();
}
//
注:上面的代码是对我原来的代码进行更改之后给你的,你在调试一下吧
查看全文
相关阅读:
C# 利用VS自带的WSDL工具生成WebService服务类
七大管理工具
在线教育系统
Redis学习一
酒店管理系统
大数据学习一
nginx负载均衡/反向代理学习一
微服务学习十
分布式学习一
Abstract和Virtual和interface , 派生类中重写 override / new关键字
原文地址:https://www.cnblogs.com/acelove/p/86293.html
最新文章
HTML5-前端开发很火且工资很高?
一道前端学习试题
网页信息抓取
通过HTML 取得页面、屏幕、浏览器的高度宽度
一道前端试题
近期前端中的一些常见的面试题
提升 Web开发性能的 10 个技巧
前端基础部分全套教程
css是如何实现在页面文字不换行、自动换行、强制换行的
Unity3D 重写下拉菜单/Dropdown组件、开启每个按钮可用
热门文章
Unity 3D光源-Directional平行光/逆光效果,光晕详解、教程
Unity 3D用简单的Cube、Sphere实现镜面/哈哈镜效果,只需十几秒哦!
Unity 3D还原Scene场景、市面多数游戏视角高度自定义、第三人称视角分离功能:平移、拖动、看向中心等
C#线程、前后台线程
C#Lambda表达式详解
Unity 3D观察者设计模式-C#委托和事件的运用
Unity 3D接入ShareSDK流程2
Unity 3D Shader流水线
Unity 3D学习心得,程序员开发心得分享!
InstallUtil
Copyright © 2011-2022 走看看