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();
}
//
注:上面的代码是对我原来的代码进行更改之后给你的,你在调试一下吧
查看全文
相关阅读:
计算机注销、热启动、冷启动
从高处理解android与服务器交互(看懂了做开发就会非常的容易)
Android—Work—1day
软件需求分析方法
Android 常用控件的介绍
android中Json的一些应用
java数据传递例子+内存分析
android中MVP模式
android的四层体系结构,基于mvc三层结构浅析
java
原文地址:https://www.cnblogs.com/acelove/p/86293.html
最新文章
客户有两台windows服务器要做sql server双机切换
http://www.sqlservercentral.com/articles/Failover+Clustered+Instance+(FCI)/92196/
文件压缩
普通的下载
.net从服务端下载文件(可以断点续传)
C#上传文件
sql的分页
获取浏览器IP
(转)Uncaught TypeError: Cannot set property 'innerHTML' of null
使用Ueditor点击上传图片时显示延迟的问题
热门文章
jsp标签的介绍
sql中的exsits和not exsits
SQL Server 2008 R2 安装出错:Could not open key
浅谈table和DIV网页布局
华硕笔记本刷BIOS
“此操作要求合并单元格都具有相同大小”解决方法
MSSQL复制表
SQLServer怎样把本地数据导入到远程服务器上(转载)
C# DataTable的詳細用法 (转)
vs2010调试sql2008存储过程
Copyright © 2011-2022 走看看