校园第一站首页 校园 教育 考试 电脑 英语 读书 就业 论文 奥运 健康 QQ 游戏 下载
XYDYZ-BBS BLOG WISH ASK
本站
Google
网页
校园第一站
主页>电脑>网络编程>ASP> 用文本+ASP打造新闻发布系统
  • 源于校园 服务于校园 进入校园第一站社区
  • 用文本+ASP打造新闻发布系统
    http://www.xydyz.com 来源:校园第一站 2007-11-12 阅读: 评论

    //图片上传
    〈SCRIPT RUNAT=SERVER LANGUAGE=VBSCRIPT〉
    Function GetUpload(FormData)
    Dim DataStart,DivStr,DivLen,DataSize,FormFieldData
    '分隔标志串(+CRLF)
    DivStr = LeftB(FormData,InStrB(FormData,str2bin(VbCrLf)) + 1)
    '分隔标志串长度
    DivLen = LenB(DivStr)
    PosOpenBoundary = InStrB(FormData,DivStr)
    PosCloseBoundary = InStrB(PosOpenBoundary + 1,FormData,DivStr)
    Set Fields = CreateObject("Scripting.Dictionary")

    While PosOpenBoundary 〉 0 And PosCloseBoundary 〉 0
    'name起始位置(name="xxxxx"),加6是因为[name="]长度为6
    FieldNameStart = InStrB(PosOpenBoundary,FormData,str2bin("name=")) + 6
    FieldNameSize = InStrB(FieldNameStart,FormData,ChrB(34)) - FieldNameStart '(")的ASC值=34
    FormFieldName = bin2str(MidB(FormData,FieldNameStart,FieldNameSize))

    'filename起始位置(filename="xxxxx")
    FieldFileNameStart = InStrB(PosOpenBoundary,FormData,str2bin("filename=")) + 10
    If FieldFileNameStart 〈 PosCloseBoundary And FieldFileNameStart 〉 PosopenBoundary Then
    FieldFileNameSize = InStrB(FieldFileNameStart,FormData,ChrB(34)) - FieldFileNameStart '(")的ASC值=34
    FormFileName = bin2str(MidB(FormData,FieldFileNameStart,FieldFileNameSize))
    Else
    FormFileName = ""
    End If

    'Content-Type起始位置(Content-Type: xxxxx)
    FieldFileCTStart = InStrB(PosOpenBoundary,FormData,str2bin("Content-Type:")) + 14
    If FieldFileCTStart 〈 PosCloseBoundary And FieldFileCTStart 〉 PosOpenBoundary Then
    FieldFileCTSize = InStrB(FieldFileCTStart,FormData,str2bin(VbCrLf & VbCrLf)) - FieldFileCTStart
    FormFileCT = bin2str(MidB(FormData,FieldFileCTStart,FieldFileCTSize))
    Else
    FormFileCT = ""
    End If

    '数据起始位置:2个CRLF开始
    DataStart = InStrB(PosOpenBoundary,FormData,str2bin(VbCrLf & VbCrLf)) + 4
    If FormFileName 〈〉 "" Then
    '数据长度,减1是因为数据文件的存取字节数问题(可能是AppendChunk方法的问题):
    '由于字节数为奇数的图象存到数据库时会去掉最后一个字符导致图象不能正确显示,
    '字节数为偶数的数据文件就不会出现这个问题,因此必须保持字节数为偶数。
    DataSize = InStrB(DataStart,FormData,DivStr) - DataStart - 1
    FormFieldData = MidB(FormData,DataStart,DataSize)
    Else
    '数据长度,减2是因为分隔标志串前有一个CRLF
    DataSize = InStrB(DataStart,FormData,DivStr) - DataStart - 2
    FormFieldData = bin2str(MidB(FormData,DataStart,DataSize))
    End If
    '建立一个Dictionary集存储Form中各个Field的相关数据
    Set Field = CreateUploadField()
    Field.Name = FormFieldName
    Field.FilePath = FormFileName
    Field.FileName = GetFileName(FormFileName)
    Field.ContentType = FormFileCT
    Field.Length = LenB(FormFieldData)
    Field.Value = FormFieldData

    Fields.Add FormFieldName, Field

    PosOpenBoundary = PosCloseBoundary
    PosCloseBoundary = InStrB(PosOpenBoundary + 1,FormData,DivStr)
    Wend
    Set GetUpload = Fields
    End Function

    '把二进制字符串转换成普通字符串函数
    Function bin2str(binstr)
    Dim varlen,clow,ccc,skipflag
    '中文字符Skip标志
    skipflag=0
    ccc = ""
    If Not IsNull(binstr) Then
    varlen=LenB(binstr)
    For i=1 To varlen
    If skipflag=0 Then
    clow = MidB(binstr,i,1)
    '判断是否中文的字符
    If AscB(clow) 〉 127 Then
    'AscW会把二进制的中文双字节字符高位和低位反转,所以要先把中文的高低位反转
    ccc =ccc & Chr(AscW(MidB(binstr,i+1,1) & clow))
    skipflag=1
    Else
    ccc = ccc & Chr(AscB(clow))
    End If
    Else
    skipflag=0
    End If
    Next
    End If
    bin2str = ccc
    End Function


    '把普通字符串转成二进制字符串函数
    Function str2bin(varstr)
    str2bin=""
    For i=1 To Len(varstr)
    varchar=mid(varstr,i,1)
    varasc = Asc(varchar)
    ' asc对中文字符求出来的值可能为负数,
    ' 加上65536就可求出它的无符号数值
    ' -1在机器内是用补码表示的0xffff,
    ' 其无符号值为65535,65535=-1+65536
    ' 其他负数依次类推。
    If varasc〈0 Then
    varasc = varasc + 65535
    End If
    '对中文的处理:把双字节低位和高位分开
    If varasc〉255 Then
    varlow = Left(Hex(Asc(varchar)),2)
    varhigh = right(Hex(Asc(varchar)),2)
    str2bin = str2bin & chrB("&H" & varlow) & chrB("&H" & varhigh)
    Else
    str2bin = str2bin & chrB(AscB(varchar))
    End If
    Next
    End Function

    '取得文件名(去掉Path)
    Function GetFileName(FullPath)
    If FullPath 〈〉 "" Then
    FullPath = StrReverse(FullPath)
    FullPath = Left(FullPath, InStr(1, FullPath, "\") - 1)
    GetFileName = StrReverse(FullPath)
    Else
    GetFileName = ""
    End If
    End Function
    〈/SCRIPT〉
    〈SCRIPT RUNAT=SERVER LANGUAGE=JSCRIPT〉

    共8页: 上一页 1 [2] [3] [4] [5] [6] [7] [8] 下一页

    上一篇:为自己的ASP网站系统构建一套标记语言  
    下一篇:劲舞世界靓装免费拿

    ·网友互动--用户名: (新注册) 密码: 匿名评论 [所有评论]
    评论内容:(用户发表意见仅代表其个人意见,评论内容与校园第一站立场无关,请自觉遵守互联网相关政策法规)
    关注此文读者还看过
    • ·为自己的ASP网站系统构建一套标记语言
      ·ASP中Request对象获取客户端数据的顺序
      ·彻底解决“Microsoft JET Database Engine
      ·一段用ASP查看ASP文件源码的程序
      ·Web在线代理(Asp版)
      ·ASP脚本语言的19个基本技巧使用
    最新更新
    •  
    文章关注度排行
    ·AspJpeg组件下载注册码及用途
    ·“Operation Must Use an Updateable Query
    ·Web在线代理(Asp版)
    ·asp分页代码
    ·ASP二进制流方法隐藏图片文件真实地址
    ·彻底解决“Microsoft JET Database Engine
    ·ASP函数库
    ·UTF-8怎么转GB2312?
    ·ASP提高数据显示效率-缓存探幽
    ·支持多风格变换的ASP分页类
    热点推荐
    为自己的ASP网站系统构建一套标记语言
    为自己的ASP网站系统构
    最新文章
    ·为自己的ASP网站系统构建一套标记语言
    ·ASP中Request对象获取客户端数据的顺序
    ·彻底解决“Microsoft JET Database Engine
    ·一段用ASP查看ASP文件源码的程序
    ·Web在线代理(Asp版)
    ·ASP脚本语言的19个基本技巧使用
    ·ASP取出HTML里面的图片地址的函数
    ·如何用ASP生成XML数据文档(RSS订阅)
    ·ASP Session对象的集合以及属性方法事件
    ·访问IIS虚拟目录需要权限的解决办法
    频道推荐
       
    网站精华
    为自己的ASP网站系统构建一套标记语言
    为自己的ASP
    Google ·高级搜索
    | 网站地图 | 关于我们 | 联系我们 | 广告服务 | 友情链接 | 版权声明 |
    版权所有:校园第一站 @2007-2008 未经授权禁止复制或建立镜像
    Site powered by hyperblue http://www.xydyz.com online services. all rights reserved. 鄂ICP备07009403号