最近,这种问题经常被问到。
1、数据库表结构(access):
用户名:文本(保存用户ID为上传的文件)
filecontenttype:文本(用来保存上传的文件类型如:应用程序/ MSWord
filecontent:OLE对象(保存文件数据)

2.html文件
muploadfile.htm


这是用来表示开始文件数据上传的。
发送文件:



这用于指示文件数据的结束。


3.asp文件
muploadfile ASP<%。
响应。过期= 0
功能bin2str(binstr)
昏暗的varlen、Clow、CCC、skipflag skipflag = 0

如果Not IsNull(binstr)然后
varlen = lenb(binstr)
我varlen = 1
如果skipflag = 0
克洛=多重交替焙烘显影工艺(binstr,I,1)
如果AscB(小丑)> 127
CCC = CCC CHR(AscW(多重交替焙烘显影工艺(binstr,我+ 1)克洛))
skipflag = 1
其他的
CCC = CCC CHR(ASCB(小丑))
最后如果
其他的
skipflag = 0
最后如果
下一个
最后如果
bin2str = CCC
端功能
varbytecount = request.totalbytes
bncrlf = ChrB ChrB(10)(13)
binhttpheader = request.binaryread(varbytecount)
分频器= LEFTB(binhttpheader,instrb(binhttpheader,bncrlf)- 1)开始读非文件域数据
而lenb(binhttpheader)> 46

binheaderdata = LEFTB(binhttpheader,instrb(binhttpheader,bncrlf bncrlf)- 1)
strheaderdata = bin2str(binheaderdata)lngfieldnamestart =仪器(strheaderdata,name=chr(34))+ len(name =chr(34))
lngfieldnameend =仪器(lngfieldnamestart,strheaderdata,CHR(34))


strfieldname =中(strheaderdata,lngfieldnamestart,lngfieldnameend lngfieldnamestart)
strfieldname =装饰(strfieldname)
strfieldname =取代(strfieldname,vbcrlf,:)

当判断文件数据时
如果strcomp(strfieldname,fileuploadstart
binhttpheader =多重交替焙烘显影工艺(binhttpheader(资料入手,instrb + 1,binhttpheader,分频器))
退出
最后如果

= instrb(binhttpheader资料入手,bncrlf bncrlf)+ 4
DATAEND = instrb(资料入手+ 1,binhttpheader,分频器)-资料入手binfieldvalue =多重交替焙烘显影工艺(binhttpheader,资料入手,DATAEND)
strfieldvalue = bin2str(binfieldvalue)
strfieldvalue =装饰(strfieldvalue)
strfieldvalue =取代(strfieldvalue,vbcrlf,:)非文件上传域变量赋值
执行strfieldname strfieldvalue


binhttpheader =多重交替焙烘显影工艺(binhttpheader(资料入手,instrb + 1,binhttpheader,分频器))

loop'starts处理文件数据
而lenb(binhttpheader)> 46


binheaderdata = LEFTB(binhttpheader,instrb(binhttpheader,bncrlf bncrlf)- 1)

strheaderdata = bin2str(binheaderdata)

读取和上载内容类型
lngfilecontenttypestart =仪器(strheaderdata,内容类型:len()+内容类型:)
strfilecontenttype =装饰(MID(strheaderdata,lngfilecontenttypestart))
strfilecontenttype =取代(strfilecontenttype,vbcrlf,:)

读取并上传文件名
lngfilenamestart =仪器(strheaderdata,文件名=chr(34))+ len(文件名=chr(34))
lngfilenameend =仪器(lngfilenamestart,strheaderdata,CHR(34))
strfilename =中(strheaderdata,lngfilenamestart,lngfilenameend lngfilenamestart)
strfilename =装饰(strfilename)
strfilename =取代(strfilename,vbcrlf,:)

读取和上载文件数据
= instrb(binhttpheader资料入手,bncrlf bncrlf)+ 4
DATAEND = instrb(资料入手+ 1,binhttpheader,分频器)- DataStart

如果strfilename <> 然后

binfieldvalue =多重交替焙烘显影工艺(binhttpheader,资料入手,DATAEND)

将上传的文件写入数据库
设置conn = server.createobject(数据连接)
康涅狄格州开DSN = ABC

SQL =SELECT * FROM user_file
集= server.createobject(ADODB。记录集)
的。打开SQL,Conn,3
rs.addnew
RS(用户名)=用户名
RS(filecontenttype )= strfilecontenttype
RS(filecontent AppendChunk binFieldValue)。
rs.update
关闭
设置=无
康涅狄格州接近
设置conn =没有

最后如果

binhttpheader =多重交替焙烘显影工艺(binhttpheader(资料入手,instrb + 1,binhttpheader,分频器))


%>


4、下载用户上传的文件
<
响应=缓冲区=真
响应清晰。

用户名=请求(用户名)设置conn = server.createobject(数据连接)
集= server.createobject(ADODB。记录集)
conn.openDSN =上传的文件
rs.open选择*从user_file其中UserID = ' 用户名,Conn,3
response.contenttype = RS(filecontenttype )lngoffset = 0
conchunksize = 1024
lngpictsize = RS(filecontent实际大小)。
而lngoffset lngpictsize
varchunk = RS(filecontent )GetChunk(conchunksize)。
response.binarywrite varchunk
lngoffset = lngoffset + conchunksize
如果lngoffset然后退出> lngpictsize



关闭
设置=无
conn.close
设置conn =没有
是这样的,我希望这个方法能帮助你们所有人。