|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
使用filesystemobject,可以对服务器上的文件进行操作,浏览、复制、移动、删除等。有ado的支持,asp对数据库的操作非常得心应手。你甚至可以像使用本地数据库那样,管理远程主机上的数据库,对表格、记录进行各种操作。上传|无组件|功能|上传|无组件|功能在解码速率方面,化境2.0已十分高了,可是,它还存在以下两个成绩:
1、用Data_5xsoft.WriteRequest.BinaryRead(Request.TotalBytes)一次读取全体数据,和用RequestData=Data_5xsoft.Read一次掏出全体数据,在上传数据过年夜时,会因为内存不敷,招致上传失利,这里应当接纳分段读取体例。
2、保留数据时,必要先从Data_5xsoft中复制到一个一时流中,在保留年夜文件时,必要两倍的存储资本,在单机形态下测试,能够发明保留工夫随文件尺寸急剧增加,乃至凌驾上传息争码工夫。
自己所写的这个类,接纳在解码的过程当中,逐块读取(注重:块的巨细与速率不成反比,单机测试标明,64K的块比1M的块快很多)的办法,办理成绩1,同时接纳对一般数据,写进事情流;对文件内容,间接写进文件本身的流的体例,办理成绩2。
代码以下,用法相似于化境:
Server.ScriptTimeOut=600
ClassQuickUpload
PrivateFForm,FFile,Upload_Stream,ConvertStream
propertygetForm
setForm=FForm
endproperty
propertygetFile
setFile=FFile
endproperty
PrivateSubClass_Initialize
dimiStart,iEnd,boundary,FieldName,FileName,ContentType,ItemValue,theFile,LineEnd
setFForm=CreateObject("Scripting.Dictionary")
setFFile=CreateObject("Scripting.Dictionary")
setUpload_Stream=CreateObject("Adodb.Stream")
Upload_Stream.mode=3
Upload_Stream.type=1
Upload_Stream.open
setConvertStream=Server.CreateObject("adodb.stream")
ConvertStream.Mode=3
ConvertStream.Charset="GB2312"
ifRequest.TotalBytes<1thenExitSub
’dStart=CDbl(Time)
’查找第一个界限
iStart=Search(Upload_Stream,ChrB(13)&ChrB(10),1)
’取界限串
boundary=subString(1,iStart-1,false)
’不是停止界限,则轮回
dowhileStrComp(subString(iStart,2,false),ChrB(13)&ChrB(10))=0
iStart=iStart+2
’取表单项信息头
dowhiletrue
iEnd=Search(Upload_Stream,ChrB(13)&ChrB(10),iStart)
’分化信息头
line=subString(iStart,iEnd-iStart,true)
’挪动地位
iStart=iEnd+2
ifLine=""thenExitdo
pos=instr(line,":")
ifpos>0then
ifStrComp(left(Line,pos-1),"Content-Disposition",1)=0then
’取表单项称号
FieldName=ExtractValue(Line,pos+1,"name")
’取文件称号
FileName=ExtractValue(Line,pos+1,"filename")
’删除文件路径
FileName=Mid(FileName,InStrRev(FileName,"")+1)
elseifStrComp(left(Line,pos-1),"Content-Type",1)=0then
’取文件范例
ContentType=trim(mid(Line,pos+1))
endif
endif
loop
’取表单项内容
ifFileName""then
’新建文件内容
settheFile=newFileInfo
theFile.InitFileName,ContentType
’文件流内容移到文件流中
MoveDataUpload_Stream,theFile.Stream,iStart
’上传数据间接传进文件流,能够削减文件存储工夫
iEnd=Search(theFile.Stream,boundary,1)
’后继数据移进事情流
MoveDatatheFile.Stream,Upload_Stream,iEnd-2
’
FFile.addFieldName,theFile
’挪动地位
iStart=iStart+2+LenB(boundary)
else
’查找界限
iEnd=Search(Upload_Stream,boundary,iStart)
’取表单项内容
ItemValue=subString(iStart,iEnd-2-iStart,true)
’
ifFForm.Exists(FieldName)then
FForm.Item(FieldName)&nb</p>由于ASP提供的是一对多的服务,所以用户的一些特殊需求很难得到满足。 |
|