asp文件上传

asp文件上传asp文件上传,asp图片上传,asp上传文件,asp上传图片

asp一直以来备受小站长们的青睐,优于其使用简单,普及程度高,便于迅速建站而备受欢迎。但是asp文件上传一直没有得到很好的解决,尤其是诸多小站长不知如何用asp上传文件。网上四处搜寻上传组件,不是使用不方便,就是病毒木马漏洞一大堆,搞得小站长们郁闷无比。今天免费分享一个小冰冰原创的霸道给力,操作简单方便,便于灵活部署的asp上传文件程序,希望对广大asp爱好者以及asp小站长们有帮助。

以下内容可以单独保存为upload.asp,要在那个页面使用就直接引入。

例如:<!–#include file=”upload.asp”–>

<%
‘小冰冰asp文件上传插件
‘requestFormData简称rfd
function myleftb(mydata,datasize)’mylefb函数替代leftb,操作二进制流更安全。
    dim ad
    set ad=server.createobject(“adodb.stream”)
        ad.type=1
        ad.mode=3
        ad.open
        ad.write mydata
        ad.position=0
        myleftb=ad.read(datasize)
        ad.close
end function

function myrightb(mydata,datasize)’myrightb替代rightb
    dim ad
    set ad=server.createobject(“adodb.stream”)
        ad.type=1
        ad.mode=3
        ad.open
        ad.write mydata
        ad.position=lenb(mydata)-datasize
        myrightb=ad.read(datasize)
        ad.close
end function

‘查询字符第n词出现的位置
function scount(mydata,str,n)
    dim datastart,m
    datastart=1
    m=0
    do while instr(datastart,mydata,str)>0
        m=m+1
        if m=n then
            scount=instr(datastart,mydata,str)
            exit do
            exit function
        end if
        datastart=instr(datastart,mydata,str)+len(str)
    loop
    if m<n then
        scount=0
    end if
end function

‘截取字节
function cutout(mydata,datastart,datasize)
    dim ldata,rdata
    ldata=myleftb(mydata,datastart-1)
    rdata=myrightb(mydata,lenb(mydata)-lenb(ldata))
    cutout=myleftb(rdata,datasize)
end function

‘字节保存为文件
sub btf(mydata,path)
    dim ad
    set ad=server.createobject(“adodb.stream”)
        ad.type=1
        ad.mode=3
        ad.open
        ad.write mydata
        ad.position=0
        ad.savetofile server.mappath(path),2
        ad.close
    set ad=nothing
end sub

‘查询字节第n次出现的位置
function bcount(mydata,str,n)
    dim datastart,m
    datastart=1
    m=0
    do while instrb(datastart,mydata,str)>0
        m=m+1
        if m=n then
            bcount=instrb(datastart,mydata,str)
            exit do
            exit function
        end if
        datastart=instrb(datastart,mydata,str)+len(str)
    loop
    if m<n then
        bcount=0
    end if
end function

‘字节转字符
function bts(data)
    dim ad
    set ad=server.createobject(“adodb.stream”)
        ad.type=2
        ad.mode=3
        ad.open
            ad.writetext data
            ad.position=0
            ad.charset=”gb2312″
            ad.position=2
            bts=ad.readtext
        ad.close
    set ad=nothing
end function

‘查询字符出现的总次数
function checkcount(mydata,str)
    if str=”” then
        checkcount=0
        exit function
    end if
    if str=null then
        checkcount=0
        exit function
    end if
    dim m,datastart
    m=0
    datastart=1
    do while instr(datastart,mydata,str)>0
        if instr(datastart,mydata,str)=0 then
            exit do
        end if
        m=m+1
        datastart=instr(datastart,mydata,str)+len(str)
    loop
    checkcount=m
end function

‘查询字节出现的次数
function checkcountb(mydata,str)
    if lenb(str)=0 then
        checkcountb=0
        exit function
    end if
    dim m,datastart
    m=0
    datastart=1
    do while instrb(datastart,mydata,str)>0
        if instrb(datastart,mydata,str)=0 then
            exit do
        end if
        m=m+1
        datastart=instrb(datastart,mydata,str)+len(str)
    loop
    checkcountb=m
end function

sub rfd(formdata,myform)
    dim hcf,fgf,n,datastart,dataend,datasize,tempdata,headdata,headdatastr,myarray,mytempdata,dd
    if lenb(formdata)>0 then
        hcf=chrB(13)&chrB(10)
        fgf=myleftb(formdata,instrb(formdata,hcf)-1)
        for n=1 to checkcountb(formdata,fgf)-1
    ‘分割formdata
            datastart=bcount(formdata,fgf,n)+lenb(fgf)
            dataend=bcount(formdata,fgf,n+1)-1
            datasize=dataend-datastart+1
            tempdata=cutout(formdata,datastart,datasize)
    ‘得到headdata
            datastart=bcount(tempdata,hcf,1)+1
            dataend=bcount(tempdata,hcf,2)-1
            datasize=dataend-datastart+1
            headdata=cutout(tempdata,datastart,datasize)
            headdatastr=bts(headdata)
    ‘判断是文件还是字符
            myarray=split(headdatastr,””””)
        ‘得到name,myarray(1)是name
            if ubound(myarray)>3 then
    ‘是文件,myarray(3)是filename既文件名包括扩展名
    ‘截取文件字节
                
                if len(myarray(3))=0 then’文件名不存在,说明没有选择上传的文件
                    myform.add myarray(1)&”_filedata”,””
                    myform.add myarray(1)&”_filename”,””
                    myform.add myarray(1)&”_format”,””
                else
                    datastart=bcount(tempdata,hcf,4)+lenb(hcf)
                    datasize=lenb(tempdata)-datastart+1
                    mytempdata=cutout(tempdata,datastart,datasize)

                    myform.add myarray(1)&”_filedata”,mytempdata
                    myform.add myarray(1)&”_filename”,myarray(3)
                    dd=split(myarray(3),”.”)
                    myform.add myarray(1)&”_format”,dd(ubound(dd))’文件格式

                end if
            else
    ‘是字符
                datastart=bcount(tempdata,hcf,3)+lenb(hcf)
                datasize=lenb(tempdata)-datastart+1
                mytempdata=cutout(tempdata,datastart,datasize)

                if lenb(mytempdata)=2 then’说明没有填写表单内容
                    myform.add myarray(1)&”_str”,””
                else
                    myform.add myarray(1)&”_str”,bts(mytempdata)
                end if
            end if
        next
    end if
end sub
%>

上传文件的表单页面index.asp或者自己随便弄个名字也行。

<%

‘引入upload.asp页面

%>

<!–#include file=”upload.asp”–>
<%

‘使用方法
formdata=request.binaryread(request.totalbytes)’接收字节流文件,可以不用formdata做变量名,根据喜好选择变量名
if lenb(formdata)>0 then’判断字节流文件长度,有字节流文件传过来就说明表单提交过来了。
    set myform=server.createobject(“scripting.dictionary”)’创建一个字典对象,用来接收表单数据,myform是我取的名字,实际使用的时候自己随意定义一个变量,不一定非得是myform

        call rfd(formdata,myform)’调用表单数据处理过程函数,这个过程函数会自动处理表单字节流,并自动保存在myform字典里面。rfd()过程函数意思是requestFormData,如果不喜欢这个名字,可以在upload.asp文件里面自己改一下。

‘重点说明:

‘myform.item(“[name]_str”)表示传过来的字符信息,比如input,textarea文本,没有则为空。

‘myform.item(“[name]_filename”)表示文件名字符,例如xxxx.mp4

‘myform.item(“[name]_filedata”)表示type=”file”的表单传过来的文件字节流,注意是字节信息,要保存为文件要调用upload.asp文件里的 btf(mytata,path)过程函数。

‘myform.item(“[name]_format”)里面保存的是文件的扩展名,注意不带”.”的扩展名,比如”jpg”

‘btf(mydata,path)’过程函数,把字节流保存为文件。

用法:call btf(,myform.item(“[name]_filedata”),”xxxx.mp4″)覆盖方式保存

‘[name]就是表单里面的name=”xxxxx”。html里面表单没有name是不能上传的哦。

‘这个上传文件的插件不涉及到判断文件大小,过滤敏感词汇,判断文件格式等功能。

‘1,判断文件大小的方法:lenb(myform.item(“[name]_filedata”))。

‘2过滤敏感词的方法 instr(myform.item(“[name]_str”),”敏感词”)

‘3判断文件格式的方法:instr(myform.item(“[name]_format”),”文件格式比如jpg”)

4’生成文件名的功能在本上传文件里面不涉及,实际上自己写一个就可以了。用“日期+随机数+扩展名”的方式就可以很容易生成不同的文件名。

‘例如:
        if lenb(myform.item(“myfile_filedata”))>0 then’判断文件大小
            call btf(myform.item(“myfile_filedata”),”xxxxxxxxxx.”&myform.item(“myfile_format”))’保存文件
        end if

    set myform=nothing’关闭字典对象,记得要关闭,养成好习惯。
    response.write “<script>alert(‘ok’);self.location=document.referrer;</script>” ‘表单信息处理完毕,弹出ok,返回上一页并刷新,实际要怎么处理根据自己的需要来。
    response.end
end if

‘下面是表单结构,实际的表单结构可以根据需要自己设计,实际上这个upload.asp上传文件可以对任意表单传过来的字节流信息做处理。
%>

<form enctype=”multipart/form-data” method=”post” name=”theform” action=”upload.asp”>
    <input type=”file” name=”myfile”>
    <input type=”text” name=”mytext”>
    <input type=”submit” name=”submit” value=”提交”>
</form>

今天的文章asp文件上传分享到此就结束了,感谢您的阅读,如果确实帮到您,您可以动动手指转发给其他人。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/24600.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注