'**************************************************
'函数id:0025[取得数据库链接字串]
'函数名:getconnstr
'作 用:取得数据库链接字串,能生成msaccess和mssqlserver链接串
'参 数:lx ---- 0 是msaccess , 1 是mssqlserver
'参 数:dbiporpath ---- 数据库ip或路径
'参 数:dbmc ---- 数据库名称
'参 数:dbuid ---- 数据库用户名称
'参 数:dbupwd ---- 数据库用户密码
'返回值:链接字串
'示 例:http://www.knowsky.com/
'**************************************************
public function getconnstr(byval lx,byval dbiporpath,byval dbmc,byval dbuid,byval dbupwd)
getconnstr=""
if lx=0 then
if right(dbiporpath,1)<>"\" then dbiporpath=dbiporpath & "\"
getconnstr ="provider=microsoft.jet.oledb.4.0;data source="&dbiporpath&dbmc&";jet oledb:database password="&dbupwd&";"
end if
if lx=1 then
getconnstr ="driver=sql server;uid="&dbuid&";database="&dbmc&";server="&dbiporpath&";pwd="&dbupwd&";"
end if
end function
'**************************************************
'函数id:0026[取得multipart/form-data形式上传文件]
'函数名:getimagedata
'作 用:取得multipart/form-data形式上传文件
'参 数:maxsize ---- 上传的限止大小,单位:m(兆)
'返回值:二进制数据
'示 例:
'**************************************************
public function getimagedata(byval maxsize)
getimagedata=""
dim formsize,formdata,bncrlf,divider,datastart,dataend,mydata
formsize=request.totalbytes
if (formsize<=(maxsize*1024*1024)) then
formdata=request.binaryread(formsize)
pos_ts=lenb(getbytestring(chr(13) & chr(10) & chr(13) & chr(10)))
pos_b=instrb(formdata,getbytestring(chr(13) & chr(10) & chr(13) & chr(10)))+pos_ts
nformdata=midb(formdata,pos_b)
pos_ts=instrb(nformdata,getbytestring(chr(13) & chr(10) & "--"))
nnformdata=midb(nformdata,pos_ts)
pos_e=lenb(formdata)-lenb(nnformdata)-pos_b+1
datastart =pos_b
dataend=pos_e
mydata=midb(formdata,datastart,dataend)
end if
getimagedata=mydata
end function
'''' 将字串转为二进制串
function getbytestring(stringstr)
for i=1 to len(stringstr)
char=mid(stringstr,i,1)
getbytestring=getbytestring & chrb(ascb(char))
next
end function
'**************************************************
'函数id:0027[保存或查看上传到数据库中的数据,带调用上传窗口]
'函数名:goimgtodb
'作 用:保存或查看上传到数据库中的数据,带调用上传窗口
'参 数:pplx ---- 执行类型(空为保存,id号为查看该id的文件)
'参 数:purl ---- 主执行程序的url部份
'参 数:connstr ---- 上传文件的数据库链接字串
'参 数:imagtbname ---- 文件保存的数据表名称
'参 数:did ---- 文件id字段名
'参 数:dmc ---- 文件名称字段名
'参 数:dlx ---- 文件类型字段名
'参 数:dmem ---- 文件说明字段名
'参 数:ddata ---- 文件的二进制数据的字段名
'参 数:maxsize ---- 上传的限止大小,单位:m(兆)
'参 数:idlx ---- 标识id字段的类型 ( 0 字符型 1 数值(非自增量型) 2 数值型(自增量型) )
'返回值:成功保存的javascript 注在非自动增量情况下标识字段长度应超过20个字符
'示 例:goimgtodb("17","http://127.0.0.1/function.asp",getconnstr(1,"127.0.0.1","temp","sa","mzy1029"),"img","id","mc","lx","mem","data",20)
'示 例:goimgtodb("","http://127.0.0.1/function.asp",getconnstr(1,"127.0.0.1","temp","sa","mzy1029"),"img","id","mc","lx","mem","data",20)
'**************************************************
public function goimgtodb(byval pplx,byval purl,byval connstr,byval imagtbname,byval did,byval dmc,byval dlx,byval dmem,byval ddata,byval maxsize,byval idlx)
dim pjobs,pjurl
tempimg_conn_str=connstr
set fu_conn=server.createobject("adodb.connection")
set fu_rs=server.createobject("adodb.recordset")
fu_conn.open tempimg_conn_str
if jcid(pplx)=0 then
pjobs=request("img")
if instr(purl,"?")>0 then
pjurl=purl&"&img=sav"
else
pjurl=purl&"?img=sav"
end if
if pjobs="" then response.write posimagewin(pjurl)
if pjobs="sav" then
sql_str="select "&did&","&dmc&","&dlx&","&dmem&","&ddata&" from "&imagtbname
fu_rs.open sql_str,fu_conn,3,3
fu_rs.addnew
if idlx < 2 then
fu_rs(did) =maketheid()
end if
fu_rs(dmc) =request("mc")
fu_rs(dlx) =request("lx")
fu_rs(dmem) =request("mem")
fu_rs(ddata).appendchunk getimagedata(jcid(maxsize))
fu_rs.update
fu_rs.close
fu_rs.open sql_str,fu_conn,3,3
fu_rs.movelast
response.write "<script language=javascript>"&vbcrlf
response.write "parent.pomem.imageid.value='"&fu_rs(did)&"';"&vbcrlf
response.write "parent.bc.innerhtml='已成功保存数据!';"
response.write "</script>"&vbcrlf
end if
else
if idlx > 0 then
sql_str="select "&did&","&dmc&","&dlx&","&dmem&","&ddata&" from "&imagtbname&" where ("&did&" ="&pplx&")"
else
sql_str="select "&did&","&dmc&","&dlx&","&dmem&","&ddata&" from "&imagtbname&" where ("&did&" ='"&pplx&"')"
end if
fu_rs.open sql_str,fu_conn,1,1
if fu_rs.recordcount >0 then
tempaa=trim(fu_rs(dlx))
response.clear
response.expires = -9999
response.addheader "pragma", "no-cache"
response.addheader "cache-ctrol", "no-cache"
response.buffer = true
response.addheader "content-disposition:","attachment;filename="&fu_rs(dmc)&"."&tempaa
response.contenttype="application/"&trim(fu_rs(dlx))
response.flush
response.binarywrite fu_rs(ddata)
response.end
end if
end if
fu_rs.close
fu_conn.close
set fu_rs = nothing
set fu_conn = nothing
end function
'**************************************************''''
'函数id:0028[取得图像的类型|宽|高]
'函数名:getimagedx
'作 用:取得图像的类型|宽|高
'参 数:filepath ---- 文件路径及文件命名
'返回值:"类型|宽|高"
'**************************************************''''
public function getimagedx(byval filepath)
dim tempsm,nbxx,wjxx(3)
set tempsm = server.createobject("adodb.stream")
tempsm.mode=3
tempsm.type=1
tempsm.open
tempsm.loadfromfile filepath
nbxx=hex(binval(tempsm.read(3)))
wjxx(0)=nbxx
wjxx(1)="0"
wjxx(2)="0"
if nbxx="464947" then
wjxx(0)="gif"
tempsm.read(3)
wjxx(1)=binval(tempsm.read(2))
wjxx(2)=binval(tempsm.read(2))
end if
if nbxx="ffd8ff" then
wjxx(0)="jpg"
do
do: p1=binval(tempsm.read(1)): loop while p1=255 and not tempsm.eos
if p1>191 and p1<196 then exit do else tempsm.read(binval2(tempsm.read(2))-2)
do:p1=binval(tempsm.read(1)):loop while p1<255 and not tempsm.eos
loop while true
tempsm.read(3)
wjxx(2)=binval2(tempsm.read(2))
wjxx(1)=binval2(tempsm.read(2))
end if
if mid(nbxx,3)="4d42" then
tempsm.read(15)
wjxx(0)="bmp"
wjxx(1)=binval(tempsm.read(4))
wjxx(2)=binval(tempsm.read(4))
end if
if nbxx="4e5089" then
wjxx(0)="png"
tempsm.read(15)
wjxx(1)=binval2(tempsm.read(2))
tempsm.read(2)
wjxx(2)=binval2(tempsm.read(2))
end if
if nbxx="535743" then
wjxx(0)="swf"
tempsm.read(5)
bindata=tempsm.read(1)
sconv=num2str(ascb(bindata),2 ,8)
nbits=str2num(left(sconv,5),2)
sconv=mid(sconv,6)
while(len(sconv)<nbits*4)
bindata=tempsm.read(1)
sconv=sconv&num2str(ascb(bindata),2 ,8)
wend
wjxx(1)=int(abs(str2num(mid(sconv,1*nbits+1,nbits),2)-str2num(mid(sconv,0*nbits+1,nbits),2))/20)
wjxx(2)=int(abs(str2num(mid(sconv,3*nbits+1,nbits),2)-str2num(mid(sconv,2*nbits+1,nbits),2))/20)
end if
tempsm.close
set tempsm=nothing
getimagedx = wjxx(0)&"|"&wjxx(1)&"|"&wjxx(2)
end function
function binval(bin)
dim ret
ret = 0
for i = lenb(bin) to 1 step -1
ret = ret *256 + ascb(midb(bin,i,1))
next
binval=ret
end function
function binval2(bin)
dim ret
ret = 0
for i = 1 to lenb(bin)
ret = ret *256 + ascb(midb(bin,i,1))
next
binval2=ret
end function
function str2num(str,base)
dim ret
ret = 0
for i=1 to len(str)
ret = ret *base + cint(mid(str,i,1))
next
str2num=ret
end function
function num2str(num,base,lens)
dim ret
ret = ""
while(num>=base)
ret = (num mod base) & ret
num = (num - num mod base)/base
wend
num2str = right(string(lens,"0") & num & ret,lens)
end function
5
如对本文有疑问,
点击进行留言回复!!
网友评论