繁体中文
设为首页
加入收藏
当前位置:ASP技术首页 >> 客户端相关 >> 纯ASP上传图像文件到数据库的最佳例子

纯ASP上传图像文件到数据库的最佳例子

2006-06-15 08:00:00  作者:  来源:互联网  浏览次数:0  文字大小:【】【】【
简介:   IAmTrue 发表于2000-11-2 7:56:49 ASP地带 getfile.htm ------------------------- 保存图片到数据库 你可以找个图片试试,保存完毕后会有提示 Email : Picture : savetodb.asp --------...

   IAmTrue 发表于2000-11-2 7:56:49 ASP地带

getfile.htm

-------------------------

保存图片到数据库

你可以找个图片试试,保存完毕后会有提示

Email :

Picture :

savetodb.asp

----------------------------------

<%

Response.Buffer = TRUE

Response.Clear

byteCount = Request.TotalBytes

RequestBin = Request.BinaryRead(byteCount)

Dim UploadRequest

Set UploadRequest = CreateObject("Scripting.Dictionary")

BuildUploadRequest RequestBin

email = UploadRequest.Item("email").Item("Value")

contentType = UploadRequest.Item("blob").Item("ContentType")

filepathname = UploadRequest.Item("blob").Item("FileName")

filename = Right(filepathname,Len(filepathname)-InstrRev(filepathname,"\"))

picture = UploadRequest.Item("blob").Item("Value")

'Response.ContentType = contentType

'Response.binaryWrite picture

set objCn = server.createobject("adodb.connection")

set objRst = server.createobject("adodb.recordset")

objCn.Open "upload"

objrst.Open "pic", objcn, 1,3,2

objrst.addnew

objrst.fields("filename")=filename

objrst.fields("type")="gif"

objrst.fields("what").appendchunk picture

objrst.update

response.write "第" & objrst("id") & "个图片。"

objrst.close

objCn.close

set objrst=nothing

set objcn = nothing

%>

showpic.asp

----------------------------------------

<%

set objCn = server.createobject("adodb.connection")

set objRst = server.createobject("adodb.recordset")

objCn.Open "upload"

objrst.Open "select what from pic where id=" & request("id"), objcn

if not objrst.eof then

response.binarywrite objrst("what")

end if

objrst.close

objCn.close

set objrst=nothing

set objcn = nothing

%>

upload.asp

-------------------------------------------

<%

Sub BuildUploadRequest(RequestBin)

'Get the boundary

PosBeg = 1

PosEnd = InstrB(PosBeg,RequestBin,getByteString(chr(13)))

boundary = MidB(RequestBin,PosBeg,PosEnd-PosBeg)

boundaryPos = InstrB(1,RequestBin,boundary)

'Get all data inside the boundaries

Do until (boundaryPos=InstrB(RequestBin,boundary & getByteString("--")))

'Members variable of objects are put in a dictionary object

Dim UploadControl

Set UploadControl = CreateObject("Scripting.Dictionary")

'Get an object name

Pos = InstrB(BoundaryPos,RequestBin,getByteString("Content-Disposition"))

Pos = InstrB(Pos,RequestBin,getByteString("name="))

PosBeg = Pos+6

PosEnd = InstrB(PosBeg,RequestBin,getByteString(chr(34)))

Name = getString(MidB(RequestBin,PosBeg,PosEnd-PosBeg))

PosFile = InstrB(BoundaryPos,RequestBin,getByteString("filename="))

PosBound = InstrB(PosEnd,RequestBin,boundary)

'Test if object is of file type

If PosFile<>0 AND (PosFile

'Get Filename, content-type and content of file

PosBeg = PosFile + 10

PosEnd = InstrB(PosBeg,RequestBin,getByteString(chr(34)))

FileName = getString(MidB(RequestBin,PosBeg,PosEnd-PosBeg))

'Add filename to dictionary object

UploadControl.Add "FileName", FileName

Pos = InstrB(PosEnd,RequestBin,getByteString("Content-Type:"))

PosBeg = Pos+14

PosEnd = InstrB(PosBeg,RequestBin,getByteString(chr(13)))

'Add content-type to dictionary object

ContentType = getString(MidB(RequestBin,PosBeg,PosEnd-PosBeg))

UploadControl.Add "ContentType",ContentType

'Get content of object

PosBeg = PosEnd+4

PosEnd = InstrB(PosBeg,RequestBin,boundary)-2

Value = MidB(RequestBin,PosBeg,PosEnd-PosBeg)

Else

'Get content of object

Pos = InstrB(Pos,RequestBin,getByteString(chr(13)))

PosBeg = Pos+4

PosEnd = InstrB(PosBeg,RequestBin,boundary)-2

Value = getString(MidB(RequestBin,PosBeg,PosEnd-PosBeg))

End If

'Add content to dictionary object

UploadControl.Add "Value" , Value

'Add dictionary object to main dictionary

UploadRequest.Add name, UploadControl

'Loop to next object

BoundaryPos=InstrB(BoundaryPos+LenB(boundary),RequestBin,boundary)

Loop

End Sub

'String to byte string conversion

Function getByteString(StringStr)

For i = 1 to Len(StringStr)

char = Mid(StringStr,i,1)

getByteString = getByteString & chrB(AscB(char))

Next

End Function

'Byte string to string conversion

Function getString(StringBin)

getString =""

For intCount = 1 to LenB(StringBin)

getString = getString & chr(AscB(MidB(StringBin,intCount,1)))

Next

End Function

%>

test.mdb(dsn 名称:upload)

----------------------------------------

表pic:

id:自动加

filename:文本

type:文本

what:ole

-----------------------------------------

存成单个文件,放在一个目录下,打开(必须用http://...)getfile.htm

上传一个.gif或.jpg就可以显示了。

对于大文件在显示程序(showpic.asp)中可能会用到循环和getchunk方法。自己去做。记住,由于ASP目前暂时不支持二进行制读写,只能存二进制到数据库中。

有什么问题,请致电veryblue@chinese.com (IAmTrue)

-----------------------------------------------------------------

责任编辑:admin
相关文章