asp怎么读取存取在数据库里二进制图片呢?江湖告急!

asp怎么读取存取在数据库里二进制图片呢?江湖告急!,第1张

1.将Image图像文件存入到数据库中

我们知道数据库里的Image类型的数据是"二进制数据",因此必须将图像文件转换成字节数组才能存入数据库中.

要这里有关数据的 *** 作略写,我将一些代码段写成方法,方便直接调用.

//根据文件名(完全路径)

public byte[] SetImageToByteArray(string fileName)

{

FileStream fs = new FileStream(fileName, FileMode.Open)

int streamLength = (int)fs.Length

byte[] image = new byte[streamLength]

fs.Read(image, 0, streamLength)

fs.Close()

return image

}

//另外,在ASP.NET中通过FileUpload控件得到的图像文件可以通过以下方法

public byte[] SetImageToByteArray(FileUpload FileUpload1)

{

Stream stream = FileUpload1.PostedFile.InputStream

byte[] photo = new byte[FileUpload1.PostedFile.ContentLength]

stream.Read(photo, 0, FileUpload1.PostedFile.ContentLength)

stream.Close()

return photo

}

2.从SQL Server数据库读取Image类型的数据,并转换成bytes[]或Image图像文件

//要使用SqlDataReader要加载using System.Data.SqlClient命名空间

//将数据库中的Image类型转换成byte[]

public byte[] SetImage(SqlDataReader reader)

{

return (byte[])reader["Image"]//Image为数据库中存放Image类型字段

}

//将byte[]转换成Image图像类型

//加载以下命名空间using System.Drawing/using System.IO

using System.Data.SqlClient*/

public Image SetByteToImage(byte[] mybyte)

{

Image image

MemoryStream mymemorystream = new MemoryStream(mybyte,0, mybyte.Length)

image = Image.FromStream(mymemorystream)

return image

}

'字符串转换成二进制

function StrToBin(str)

dim curChr, curAsc, low, high

dim i

for i=1 To Len(str)

curChr = Mid(str, i, 1)

curAsc = Asc(curChr)

'asc对中文字符求出来的值可能为负数,

'加上65536就可求出它的无符号数值

'-1在机器内是用补码表示的0xffff,

'其无符号值为65535,65535=-1+65536

'其他负数依次类推。

if curAsc <0 then

curAsc = curAsc + 65535

end if

'对中文的处理:把双字节低位和高位分开

if curAsc >255 then

low = Left(Hex(Asc(curChr)), 2)

high = Right(Hex(Asc(curChr)), 2)

StrToBin = StrToBin &ChrB("&H" &low) &ChrB("&H" &high)

else

StrToBin = StrToBin &ChrB(AscB(CurChr))

end If

next

end function

'二进制转换成字符串

function BinToStr(binStr)

if IsNull(binStr) then

BinToStr = ""

exit function

end if

dim newStr, chnFlag

dim i, c

newStr = ""

chnFlag = true

for i=1 To LenB(binStr)

if chnFlag then

c = MidB(BinStr, i, 1)

if AscB(c) >127 then

'AscW 会把二进制的中文双字节字符高位和低位反转

'所以 MidB(binStr,i+1,1)&c 表达式中,c 在后面

newStr = newStr &Chr(AscW(MidB(binStr,i+1,1)&c))

chnFlag = false

else

newStr = newStr &Chr(AscB(c)) '这里用的是 ASCB 不是 ASCW

end If

else

chnFlag = true

end If

next

BinToStr = newStr

end function

rs.addnew

rs("items")= StrToBin(code)

rs.update

如果出错。.请确定items字段是否二进制类型

你可以做一个显示图片的文件,比如:img.aspx,可以接受一个ID用于读取图片二进制,并显示。

此时显示文件时可以这样:<img

src=\"img.aspx?ID=1000\"

/>

把这段代码放在datalist时,把1000换成绑定数据就可以了。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/6759796.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-27
下一篇 2023-03-27

发表评论

登录后才能评论

评论列表(0条)

保存