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();
}
//
注:上面的代码是对我原来的代码进行更改之后给你的,你在调试一下吧
查看全文
相关阅读:
ThinkPHP框架 做个简单表单 添加数据例子__ACTION__ __SELF__
ThinkPHP框架 系统规定的方法查询数据库内容!!同时也支持原生的SQL语句!
ThinkPHP框架 基础 链接数据库
ThinkPHP框架 3.2.2 获取系统常量信息 连接数据库 命名空间的理解
ThinkPHP框架 自定义 Empty 方法保护本地信息不被暴露!!!
Smarty模板保留缓存
this指向
phpcms v9 的表单向导功能的使用方法 附多个案例
phpcms标签整理_当前栏目调用
转载]PhpCms V9调用指定栏目子栏目文章的两种方法
原文地址:https://www.cnblogs.com/acelove/p/86293.html
最新文章
cas流程
form input简介
JavaWeb学习总结(一)——JavaWeb开发入门
cas 自定义数据库用户名、密码验证登录
spring MVC
cas 二次开发历程一
mysql 常见问题
cas
storm项目学习
web项目注解说明
热门文章
SPOJ 0287 Smart Network Administrator
SGU 0438 The Glorious Karlutka River =) 动态流
COJ 0358 xjr考考你数据结构(根号3)线段树区间修改
COJ 0359 xjr考考你数据结构(根号2)线段树区间增加
指针版线段树
COJ WZJ的数据结构(负十八)splay_tree的天堂
ZOJ 2760 How Many Shortest Path
Miller_Rabin素数判断,rho
COJ 3018 求1~n之间的素数
COJ 0885 LCS???
Copyright © 2011-2022 走看看