求一个可以上传小说和图片的网站源码。
& lt% @ LANGUAGE = " VBSCRIPT " code page = " 936 " % & gt;
& lt!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN " "版权所有。& ltbr/>;
版权所有:|技术支持:
& lt/tr & gt;
& lt/table & gt;
& lt%
如果request("action") = "Addnew ",那么
newline = chrB(13)amp;ChrB(10) 'newline代表二进制回车。
filesize = request . total bytes ' filesize是表单的数据大小。
Filedata =请求。binaryread (filesize)' Filedata是以下形式的二进制数据。
Divider = leftb (filedata,clng (instrb (filedata,newline))-1)“分隔符是一个分隔符。
设置Rs =服务器。CreateObject("ADODB。记录集”)
Sql="Select * From word "
卢比打开康涅狄格州的Sql,3,3
Rs.addnew
k = 1
While instrb(k,filedata,divider)& lt;instrb((instrb(k,filedata,divider)+lenb(divider)),filedata,divider)
start = instrb(k,filedata,divider) + lenb(divider) +2
endsize = instrb((instrb(k,filedata,divider) + lenb(divider)),filedata,divider) - start - 2
Content = midb (filedata,start,endsize)'取文件描述部分。
start_name = instrb(content,toByte("name= " "))
end_name = instrb(start_name + 6,content,toByte(" " " "))
Name tag = midb (content,start _ name+6,end _ name-start _ name-6)'取文件描述部分name= " "中的内容,即表单元素的名称。
pos 1 _ filename = instrb(end _ name,content,toByte("filename= " "))
如果是文件箱,文件描述部分应该有filename= ",所以pos1_filename不等于0。
如果pos1_filename = 0那么'表单不属于文件上传数据处理。
Name value = tostr (midb (content,end _ name+5,lenb (content)-end _ name-4))'获取文件内容。
将文档描述中的名称= " "中的内容与表单元素的名称进行比较,并将相应的内容添加到数据库中。
If(InStr(toStr(nametag)," file ")& gt;0)那么‘centerid 2’就是表单控件的name属性值,如下。
Rs("image") =名称值
上传文件时,在文件名中使用Session("CenterID") = namevalue。
如果…就会结束
If(InStr(toStr(nametag)," title ")& gt;0)然后
Rs("title") =名称值
如果namevalue= " "那么
回应。写" & lt脚本& gtAlert('请输入标题!')& lt/Script & gt;"
响应.结束
如果…就会结束
如果…就会结束
If(InStr(toStr(nametag)," content ")& gt;0)然后
Rs("content") =名称值
如果namevalue= " "那么
回应。写" & lt脚本& gtAlert('请输入内容!')& lt/Script & gt;"
响应.结束
如果…就会结束
如果…就会结束
If(InStr(toStr(nametag)," select ")& gt;0)然后
设置Rs1 =服务器。CreateObject("ADODB。记录集”)
Sql= "从mun中选择*
Rs1。打开康涅狄格州的Sql,3,3
Rs1("mun")=namevalue
Rs1.update
Rs1。关闭
设置RS 1 =无
如果…就会结束
RS(" wtime ")= year(now)amp;“-”& amp;月(现在)和。“-”& amp;日(现在)
回应。写入(名称值)
回应。写(" & ltbr >;)
“Else”处理文件上传部分的数据。
pos 2 _ filename = instrb(pos 1 _ filename+10,content,toByte(" " " ")
完整路径= midb (content,pos 1 _ filename+10,pos 2 _ filename-pos 1 _ filename-10)'从文件描述部分取出文件路径。
cover name = get filename(toStr(full path))
if(full path & lt;& gt如果是上传的文件,执行下面的代码。
“Dim bStart”取二进制流文件部分的起始位置。
bStart = instrb(start,filedata,newline & amp换行符)+3
' Dim bEnd '取二进制流文件部分结束位置。
bEnd=inStrB(bStart+6,filedata,divider)-bStart-3
“Dim stm”定义了一个adodb.stream源对象stm,用于将二进制流文件部分从stm复制到另一个adodb.stream。
set STM = createObject(" adodb . stream ")
Stm.type=1 '二进制模式
“Stm.mode=3”指定打开模式为读写。
stm.open
“Stm.write filedata”写入二进制流内容。
' Dim fromStm '从Stm定义adodb.stream对象以保存文件。
set from STM = createOBject(" adodb . stream ")
使用fromStm
。type=1
。模式=3
。打开
“Stm.position = bStart”指定Stm对象的起始位置,将变量bStart的值作为起始位置。
' Stm.copyTo fromstm,bEnd '将Stm二进制流复制到fromstm对象,长度为bEnd变量的长度。
。savetofile服务器。mappath(封面名),2 '保存文件,如果同名文件存在,则覆盖它。
。关闭
以…结尾
set fromStm = nothing
stm.close
设置stm =无
Rs("image") =covername '将文件的相对路径写入数据库。
如果…就会结束
如果…就会结束
k = instrb((instrb(k,filedata,divider)+lenb(divider)),filedata,divider)
行
Rs .更新
Rs关闭
设置Rs =无
回应。重定向“mylife.asp”
如果…就会结束
Function toStr(Byt)'将二进制转换为字符串。
toStr= " "
对于i=1到lenb(字节)
blow = midb(byt,I,1)
如果ascb(blow)>那么127
toStr = toStr & ampchr(ascw(midb(byt,i+1,1)& amp;吹)’
i = i+1
其他
toStr = toStr & ampchr(ascb(吹气))
如果…就会结束
然后
结束功能
Function toByte(Str)'将字符串转换为二进制。
dim i,iCode,c,iLow,iHigh
toByte= " "
For i=1到Len(Str)
c=mid(Str,I,1)
iCode =Asc(c)
如果iCode & lt0,则iCode = iCode + 65535
如果iCode & gt那就255
iLow = Left(十六进制(Asc(c)),2)
iHigh =Right(十六进制(Asc(c)),2)
托字节=托字节& ampchrB(" & amp;H " & ampiLow)和ampchrB(" & amp;H " & ampiHigh)
其他
托字节=托字节& ampchrB(AscB(c))
如果…就会结束
然后
结束功能
函数GetFileName(imagespath)'将路径转换为时间,并使上传的文件具有相同的名称。
如果imagespath & lt& gt”“那么
Rname = right (tostr(全路径),len (tostr(全路径))-instrrev (tostr(全路径)," ")+1)'来获取后缀名称。
get filename = " up images/" & amp;年(现在)和。月(现在)和。日(现在)与时;小时(现在)& amp分钟(现在)& amp第二次(现在)& amprname
其他
GetFileName = " "
如果…就会结束
结束功能
% & gt
& lt/body & gt;
& lt/html & gt;