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();
}
//
注:上面的代码是对我原来的代码进行更改之后给你的,你在调试一下吧
查看全文
相关阅读:
编程语言
MySQL之常用函数
Java常用工具类
数据结构
Java对接SAP平台接口
Maven项目依赖管理工具
Java设计模式--抽象工厂
Java基础--抽象类与接口
Java集合--ArrayList遍历删除元素
Java注解(Annotation )--结合拦截器实现是否登录验证
原文地址:https://www.cnblogs.com/acelove/p/86293.html
最新文章
结束语
第六次尝试
读书笔记四
读书笔记三
读书笔记二
第五次尝试
读书笔记一
第五周总结
第四周总结
第三周总结
热门文章
第二周总结
《大道至简》读后感
暑假第一周总结
函数嵌套与装饰器
函数基础
文件的基本操作
字符编码
列表 字典 元组 集合
流程控制
python_基本语法之变量
Copyright © 2011-2022 走看看