| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2395 人关注过本帖
标题:Request.BinaryRead 怎么分离数据?
只看楼主 加入收藏
沉默的痞子
Rank: 4
等 级:贵宾
威 望:12
帖 子:96
专家分:127
注 册:2015-10-7
结帖率:45%
收藏
 问题点数:0 回复次数:3 
Request.BinaryRead 怎么分离数据?
完全新手,想做一个上传文件的页面,参照这个文章做的

先看一下这个文章
https://blog.
 
文章最后说的用二进制保存文件 ,怎么去掉描述信息?
搜索更多相关主题的帖子: Request 分离 数据 文章 二进制 
2018-11-21 16:53
ke爱的小tu子
Rank: 2
等 级:论坛游民
帖 子:51
专家分:20
注 册:2021-2-11
收藏
得分:0 
asp批量上传文件,包括但不限于mp3,mp4,jpg,txt等文件
'接收二进制表单提交的数据

function requestmyfile()
    dim formdata,hcf,fgf,cd,cishu,n,datastart,dataend,datasize,dataLength,temp,d
    dim formdatas(29)'29表示数组的最大小标,数组元素个数是最大下标+1=30个
    dim tempsz(29,3)
    formdata=request.binaryread(request.totalbytes)
    hcf=chrB(13)&chrB(10)'回车符
    if mynumberb(formdata,hcf)<>0 then
        fgf=leftB(formdata,instrb(formdata,hcf)-1)'分隔符
        cd=lenb(fgf)'分割符的长度
        cishu=mynumberb(formdata,fgf)'分隔符出现的次数
        for n=0 to 29
            if n+1 = cishu then
                exit for
            end if
            datastart=strnb(n+1,formdata,fgf)+cd
            dataend=strnb(n+2,formdata,fgf)-1
            datasize=dataend-datastart+1
            formdatas(n)=smidb(formdata,datastart,datasize)
            temp=stb(formdatas(n),"utf-8")
            if instrb(temp,"filename")<>0 then'文件
                datastart=strn(1,temp,"""")+1
                dataend=strn(2,temp,"""")-1
                datasize=dataend-datastart+1
                tempsz(n,1)=mid(temp,datastart,datasize)'截取name
                datastart=strn(3,temp,"""")+1
                dataend=strn(4,temp,"""")-1
                datasize=dataend-datastart+1
                tempsz(n,2)=mid(temp,datastart,datasize)'截取filename
                datastart=strnb(4,formdatas(n),hcf)+2
                dataend=strnb(n+2,formdata,fgf)-1
                datasize=dataend-datastart+1
                tempsz(n,3)=smidb(formdatas(n),datastart,datasize)'截取文件二进制数据
            else'文本
                datastart=strn(1,temp,"""")+1
                dataend=strn(2,temp,"""")-1
                datasize=dataend-datastart+1
                tempsz(n,1)=mid(temp,datastart,datasize)'截取name
                tempsz(n,2)=""'是文本则filename=空值。
                datastart=strnb(3,formdatas(n),hcf)+2
                dataend=strnb(n+2,formdata,fgf)-1
                datasize=dataend-datastart+1
                tempsz(n,3)=smidb(formdatas(n),datastart,datasize)'截取文本二进制数据
                tempsz(n,3)=stb(tempsz(n,3),"utf-8")'二进制转文本
            end if
        next
    end if
    requestmyfile=tempsz
end function

'生成不重复数
function bcfs()
    dim a
    a=replace(now(),"/","")
    a=replace(a," ","")
    a=replace(a,":","")
    Randomize
    bcfs=a&Int((10000 * Rnd) + 1)
end function

'截取二进制流数据
function smidb(data,datastart,datasize)
    dim mystream
    set mystream = Server.CreateObject("adodb.stream")
        mystream.Type = 1'1是二进制,2是文本
        mystream.Mode =3'1只读,2只写,3可读写
        mystream.Open
        mystream.Write data
        mystream.position=datastart-1
        smidb=mystream.read(datasize)
        mystream.close
    set mystream=nothing
end function

'二进制保存为文件
sub savefile(mydata,path)
    dim mystream
    set mystream = Server.CreateObject("adodb.stream")
        mystream.Type = 1'1是二进制,2是文本
        mystream.Mode =3'1只读,2只写,3可读写
        mystream.Open
        mystream.Write mydata
        mystream.SaveToFile server.mappath(path),2'2表示可以覆盖创建文件
        mystream.close
    set mystream=nothing
end sub





[此贴子已经被作者于2021-2-25 21:21编辑过]

2021-02-12 16:10
ke爱的小tu子
Rank: 2
等 级:论坛游民
帖 子:51
专家分:20
注 册:2021-2-11
收藏
得分:0 
你需要的是上传文件代码,其实图片也是文件。前端js判断的时候是根据文件扩展名来判断是什么类型文件的,修改以下js文件里面的判断文件扩展名,然后把图片预览的功能修改以下。其实不难的,js懂一点,asp懂一点,html懂一点,css懂一点,基本就能搞定了。
2021-02-12 16:13
ke爱的小tu子
Rank: 2
等 级:论坛游民
帖 子:51
专家分:20
注 册:2021-2-11
收藏
得分:0 

比如上传一个文件:
mydata=requestmyfile()

1,判断文件扩展名:
split(mydata(0,2),".")就是扩展名。
2,判断文件大小。lenb(mydata(0,3))/1024就是有多少kb的文件。
3,其中mydata(0,1)表示input里面的name值,mydata(0,2)表示filename,就是文件的名字,里面含有扩展名。mydata(0,3)表示文件的二进制数据。如果是文本则已经转换成了utf-8的文字内容,可以直接response.write mydata(0,3)。其中0表示第一条数据,以此类推,1表示第二条数据,2表示第三条数据。一次性最多接收30条数据。多了也没什么意思。
4,文件保存的方法:
call savefile(mydta(0,3),"myfile/xxx.mp4")。











[此贴子已经被作者于2021-2-25 21:26编辑过]

2021-02-25 20:29
快速回复:Request.BinaryRead 怎么分离数据?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.043368 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved