中文的无组件文件上传ASP函数

2016-01-29 17:46 36 1 收藏

中文的无组件文件上传ASP函数,中文的无组件文件上传ASP函数

【 tulaoshi.com - ASP 】

  说明:持中文的无组件文件上传ASP函数,由于ASP不支持二进制写入文件,所以存成文件时必须使用组件,本函数只提供截取上传文件的数据,可以写入到数据库。

<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
 &nb

来源:http://www.tulaoshi.com/n/20160129/1502902.html

延伸阅读
标签: ASP
  在无组件上传我刚试成功,所以提供代码给大家一起共享。 /*  addemployee.asp   */ <html <head <title职工之家</title <meta http-equiv="Content-Type" content="text/html; charset=gb2312" <link rel="stylesheet" href="../css/site_css.css" type="text/css" </head <script language=...
标签: ASP
  以前,如果要用ASP操作文件,比如移动、复制、删除或者创建一个记事本文件,基本上都是通过FILESYSTEMOBJECT对象做的,当然,这个东西很专业,也没说什么不好,它可以提供完善的文件信息,比如建立时间,大小,上次修改时间等等,但是如果你不做痛苦的高代价的字符格式转换的话,利用它你无法直接操作二进制文件。 但是,现在我们介绍...
标签: ASP
  <% Class ImgWHInfo '获取图片宽度和高度的类,支持JPG,GIF,PNG,BMP     Dim ASO     Private Sub Class_Initialize         Set ASO=Server.CreateObject("ADODB.Stream")         ASO.Mode=3     &...
标签: ASP
  说明: 在256色位图中打印文字并输出 字体大小跟类型是固定的12*12宋体,如果需要其它字体可以联系本人 因为不是封装在DLL中所以执行效率不是很高 调用示列: Set objbmp = New Wh_bmpText '建立objbmp对象 objbmp.FontPath = server.mappath("font_12.asp") '汉字点阵字库地址 objbmp.loadBMP(server.mappath("bb.bmp")) '调...
标签: ASP
  编写思路: 把本地文件在客户端通过base64编码以后发送目的地. 测试过程中,上传文件过大,导致超时不成功. 后来经过改善.把编码分段发送.测试20M成功 编写目的: 在传统的解决方案里面,一次一次选取上传可以.但是在碰到把数据库里文件路径读出来,并把这些文件上传到一个地方的时候就比较麻烦. 如果得到路径一个一个去找到用ftp当然也是可...

经验教程

650

收藏

86
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部