你好,欢迎来到电脑编程技巧与维护杂志社! 杂志社简介广告服务读者反馈编程社区  
合订本订阅
 
 
您的位置:技术专栏 / Linux开发
用ASP和VBScript上载文件(三)
 

首先从" Content-Disposition " 头中找到控制的名字。名字的结尾用"字符或chr(34)划分。
  ’Get an object name Pos = InstrB(BoundaryPos,RequestBin,getByteString("Content-Disposition"))
  Pos = InstrB(Pos,RequestBin,getByteString("name=")) PosBeg = Pos+6 PosEnd
  = InstrB(PosBeg,RequestBin,getByteString(chr(34))) Name = getString(MidB(RequestBin,PosBeg,PosEnd-PosBeg))
  
    现在测试控制是文件类控制还是文本类控制。如果是文本类控制,除了它的名字以外没有其它任何数据。 如果是文件类控制,就会得到一些额外信息,如文件名和Content-Type。
  
  PosFile=InstrB(BoundaryPos,RequestBin,getByteString("filename=")) PosBound
  = InstrB(PosEnd,RequestBin,boundary) ’Test if object is of file type If
  PosFile〈〉0 AND (PosFile〈PosBound)
  
    Then 如果是控制是文件类控制,就将路径和文件名进行分解,并将他们填加到控制的dictionary 对象中。分解后的文件名是一个单字节字符串,要将它转换成双字节字符串才能作为variant字符串变量使用。这通过最后定义的getString()方法来实现:
  
  ’Get Filename, content-type and content of file PosBeg = PosFile + 10 PosEnd
  = InstrB(PosBeg,RequestBin,getByteString(chr(34))) FileName = getString(MidB(RequestBin,PosBeg,PosEnd-PosBeg))
  ’Add filename to dictionary object UploadControl.Add "FileName", FileName
  Pos = InstrB(PosEnd,RequestBin,getByteString("Content-Type:")) PosBeg =
  Pos+14 PosEnd = InstrB(PosBeg,RequestBin,getByteString(chr(13))) ’Add content-type
  to dictionary object ContentType = getString(MidB(RequestBin,PosBeg,PosEnd-PosBeg))
  
    UploadControl.Add "ContentType",ContentType 现在就可以得到文件的核心内容了。这个内容不需要转换,因为它是二进制的。可以将它存入一个文件系统或作为一个二进制长对象(blob)放入数据库中。
  
  ’Get content of object PosBeg = PosEnd+4 PosEnd = InstrB(PosBeg,RequestBin,boundary)-2
  Value = MidB(RequestBin,PosBeg,PosEnd-PosBeg)
  
    Else 如果是文本类控制,除了内容以外就没有其它数据需要分解。内容要转换成为双字节字符串,以便将来用 在VBScript代码中。
  
  ’Get content of object Pos = InstrB(Pos,RequestBin,getByteString(chr(13)))
  PosBeg = Pos+4 PosEnd = InstrB(PosBeg,RequestBin,boundary)-2 Value = getString(MidB(RequestBin,PosBeg,PosEnd-PosBeg))
  End If
  
    将内容加入dictionary对象中。将key设置成 " Value ",那么item 就是内容。根据控制类型的不同,内容可以是字符串或二进制数据。
  
  ’Add content to dictionary object
  UploadControl.Add "Value" , Value
  
    最后将控制的dictionary 对象加入一个全程dictionary 对象中。使用的key 是控制的名字。item 是刚刚创建的dictionary对象,名为UploadControl。
  
  ’Add dictionary object to main dictionary UploadRequest.Add name, UploadControl
  ’Loop to next object BoundaryPos=InstrB(BoundaryPos+LenB(boundary),RequestBin,boundary)
  Loop End Sub
  
  字节-字符串转换函数

(编辑:aniston)

  推荐精品文章

·2024年12月目录 
·2024年11月目录 
·2024年10月目录 
·2024年9月目录 
·2024年8月目录 
·2024年7月目录 
·2024年6月目录 
·2024年5月目录 
·2024年4月目录 
·2024年3月目录 
·2024年2月目录 
·2024年1月目录
·2023年12月目录
·2023年11月目录

  联系方式
TEL:010-82561037
Fax: 010-82561614
QQ: 100164630
Mail:gaojian@comprg.com.cn

  友情链接
 
Copyright 2001-2010, www.comprg.com.cn, All Rights Reserved
京ICP备14022230号-1,电话/传真:010-82561037 82561614 ,Mail:gaojian@comprg.com.cn
地址:北京市海淀区远大路20号宝蓝大厦E座704,邮编:100089