文件上传

None.gif<%
None.gifServer.ScriptTimeout 
= 400 '设置超时时限
None.gif
If Request.ServerVariables(""REQUEST_METHOD""= ""POST"" Then 
None.gif  Dim Fields
None.gif  UploadSizeLimit 
= 10000000 '设置一次最大上传量
None.gif
  Set Fields = GetUpload() '分解上传字段及取得文件内容
None.gif
  p=SaveUpload(Fields, Server.MapPath(""."")) '保存于服务器端
None.gif
  Fields = Empty 
None.gifEnd If
None.gif
%>
None.gif
<Table>
None.gif
<form method=post ENCTYPE=""multipart/form-data"">
None.gif
<TR><TD ColSpan=2>
None.gif
<Table Width=100% Border=0 cellpadding=0 cellspacing=0><tr><TD>
None.gif
<Div ID=files>
None.gif文件1:
<input type=""file"" name=""File1""><br>
None.gif文件2:
<input type=""file"" name=""File2"">
None.gif
</Div>
None.gif
<TD>
None.gif
<input type=""submit"" Name=""Action"" value=""现在上传""> 
None.gif
</TD></TR></Table> 
None.gif
</TD></TR> 
None.gif
</form> 
None.gif
</Table> 
None.gif
None.gif
None.gif
<SCRIPT RUNAT=SERVER LANGUAGE=VBSCRIPT>
None.gifDim UploadSizeLimit
None.gif
None.gifFunction GetUpload()
None.gifDim Result
None.gifSet Result 
= Nothing
None.gif
None.gifIf Request.ServerVariables(
""REQUEST_METHOD""= ""POST"" Then 
None.gif  Dim CT, PosB, Boundary, Length, PosE
None.gif  CT 
= Request.ServerVariables(""HTTP_Content_Type""
None.gif  If LCase(Left(CT, 
19)) = ""multipart/form-data"" Then 
None.gif    PosB 
= InStr(LCase(CT), ""boundary=""
None.gif      If PosB 
> 0 Then Boundary = Mid(CT, PosB + 9
None.gif         Length 
= CLng(Request.ServerVariables(""HTTP_Content_Length"")) 
None.gif           
if """" & UploadSizeLimit<>"""" then
None.gif              UploadSizeLimit 
= clng(UploadSizeLimit)
None.gif                  
if Length > UploadSizeLimit then 
None.gif                     response.write(
""length too max err!"")
None.gif                     exit function
None.gif                 end 
if
None.gif           end 
if
None.gif
None.gif           If Length 
> 0 And Boundary <> """" Then 
None.gif               Boundary 
= ""--"" & Boundary
None.gif               Dim Head, Binary
None.gif               Binary 
= Request.BinaryRead(Length) 
None.gif               Set Result 
= SeparateFields(Binary, Boundary)
None.gif               Binary 
= Empty 
None.gif           Else
None.gif               response.write(
""Zero length request ."")
None.gif           End If
None.gif      Else
None.gif          response.write( 
""No file sent."")
None.gif      End If
None.gif Else
None.gif    response.write(
""Bad request method."")
None.gif End If
None.gif Set GetUpload 
= Result
None.gifEnd Function
None.gif
None.gifFunction SeparateFields(Binary, Boundary)
None.gifDim PosOpenBoundary, PosCloseBoundary, PosEndOfHeader, isLastBoundary
None.gifDim Fields
None.gifBoundary 
= StringToBinary(Boundary)
None.gifPosOpenBoundary 
= InstrB(Binary, Boundary)
None.gifPosCloseBoundary 
= InstrB(PosOpenBoundary + LenB(Boundary), Binary, Boundary, 0)
None.gifSet Fields 
= CreateObject(""Scripting.Dictionary"")
None.gif
None.gifDo While (PosOpenBoundary 
> 0 And PosCloseBoundary > 0 And Not isLastBoundary)
None.gif  Dim HeaderContent, FieldContent
None.gif  Dim Content_Disposition, FormFieldName, SourceFileName, Content_Type
None.gif  Dim Field, TwoCharsAfterEndBoundary
None.gif  PosEndOfHeader 
= 
None.gif         InstrB(PosOpenBoundary 
+ Len(Boundary), Binary, StringToBinary(vbCrLf + vbCrLf))
None.gif  HeaderContent 
= 
None.gif         MidB(Binary, PosOpenBoundary 
+ LenB(Boundary) + 2, PosEndOfHeader - PosOpenBoundary - LenB(Boundary) - 2)
None.gif  FieldContent 
= 
None.gif         MidB(Binary, (PosEndOfHeader 
+ 4), PosCloseBoundary - (PosEndOfHeader + 4- 2)
None.gif  GetHeadFields BinaryToString(HeaderContent), Content_Disposition, FormFieldName, SourceFileName, Content_Type
None.gif  Set Field 
= CreateUploadField()
None.gif
None.gif  Field.Name 
= FormFieldName
None.gif  Field.ContentDisposition 
= Content_Disposition
None.gif  Field.FilePath 
= SourceFileName
None.gif  Field.FileName 
= GetFileName(SourceFileName)
None.gif  Field.ContentType 
= Content_Type
None.gif  Field.Value 
= FieldContent
None.gif  Field.Length 
= LenB(FieldContent)
None.gif  Fields.Add FormFieldName, Field
None.gif
None.gif  TwoCharsAfterEndBoundary 
= 
None.gif          BinaryToString(MidB(Binary, PosCloseBoundary 
+ LenB(Boundary), 2))
None.gif  isLastBoundary 
= TwoCharsAfterEndBoundary = ""--""
None.gif  If Not isLastBoundary Then 
None.gif    PosOpenBoundary 
= PosCloseBoundary
None.gif    PosCloseBoundary 
= InStrB(PosOpenBoundary + LenB(Boundary), Binary, Boundary )
None.gif  End If
None.gifLoop
None.gif
None.gifSet SeparateFields 
= Fields
None.gif
None.gifEnd Function
None.gif
None.gifFunction BinaryToString(Bin_string_data)
None.gifDim I, String_data
None.gif
None.gifFor I
=1 to LenB(Bin_string_data)
None.gif  
if AscB(MidB(bin_string_data, i, 1)) > 127 then
None.gif    string_data 
= 
None.gif               string_data 
& chr(Ascb(MidB(bin_string_data, i, 1))*256+Ascb(MidB(bin_string_data, i+11)))
None.gif    i
=i+1
None.gif  
else
None.gif     string_data 
= string_data & ChrW(AscB(MidB(bin_string_data, i, 1)))
None.gif  end 
if 
None.gifNext 
None.gif
None.gifBinaryToString 
= string_data
None.gifEnd Function
None.gif
None.gifFunction StringToBinary(String)
None.gifDim I, B
None.gifFor I
=1 to len(String)
None.gif
= B & ChrB(Asc(Mid(String,I,1)))
None.gifNext 
None.gifStringToBinary 
= B
None.gifEnd Function
None.gif
None.gifFunction GetHeadFields(ByVal Head, Content_Disposition, Name, FileName, Content_Type)
None.gifContent_Disposition 
= LTrim(SeparateField(Head, ""content-disposition:"""";""))
None.gifName 
= (SeparateField(Head, ""name="""";""))
None.gifIf Left(Name, 
1= """""""" Then Name = Mid(Name, 2, Len(Name) - 2)
None.gifFileName 
= (SeparateField(Head, ""filename="""";"")) 'ltrim
None.gif
If Left(FileName, 1= """""""" Then FileName = Mid(FileName, 2, Len(FileName) - 2)
None.gifContent_Type 
= LTrim(SeparateField(Head, ""content-type:"""";""))
None.gifEnd Function
None.gif
None.gifFunction SeparateField(From, ByVal sStart, ByVal sEnd)
None.gifDim PosB, PosE, sFrom
None.gifsFrom 
= LCase(From)
None.gifPosB 
= InStr(sFrom, sStart)
None.gifIf PosB 
> 0 Then
None.gifPosB 
= PosB + Len(sStart)
None.gifPosE 
= InStr(PosB, sFrom, sEnd)
None.gifIf PosE 
= 0 Then PosE = InStr(PosB, sFrom, vbCrLf)
None.gifIf PosE 
= 0 Then PosE = Len(sFrom) + 1
None.gifSeparateField 
= Mid(From, PosB, PosE - PosB)
None.gifElse
None.gifSeparateField 
= Empty
None.gifEnd If
None.gifEnd Function
None.gif
None.gifFunction GetFileName(FullPath)
None.gifDim Pos, PosF
None.gifPosF 
= 0
None.gifFor Pos 
= Len(FullPath) To 1 Step -1
None.gifSelect Case Mid(FullPath, Pos, 
1)
None.gifCase 
""/""""\"": PosF = Pos + 1: Pos = 0
None.gifEnd Select
None.gifNext
None.gifIf PosF 
= 0 Then PosF = 1
None.gifGetFileName 
= Mid(FullPath, PosF)
None.gifEnd Function
None.gif
None.gifFunction SaveUpload(Fields, DestinationFolder)
None.gif
if DestinationFolder = """" then DestinationFolder = Server.MapPath(""."")
None.gifDim FS, Field
None.gifSet FS 
= CreateObject(""Scripting.FileSystemObject"")
None.gifDim TextStream
None.gifFor Each Field In Fields.Items
None.gif
if len(Field.FileName)>0 then
None.gifSet TextStream 
= FS.CreateTextFile(DestinationFolder & ""\"" & Field.FileName)
None.gifTextStream.Write BinaryToString(Field.Value) 
None.gifTextStream.Close
None.gifend 
if
None.gifNext
None.gifSaveUpload 
= Empty
None.gifEnd Function
None.gif
None.gif
</SCRIPT>
None.gif
None.gif
None.gif
<SCRIPT RUNAT=SERVER LANGUAGE=JSCRIPT>
ExpandedBlockStart.gifContractedBlock.giffunction CreateUploadField()
dot.gifreturn new uf_Init() }
ExpandedBlockStart.gifContractedBlock.giffunction uf_Init()
dot.gif{
InBlock.gif
this.Name = null
InBlock.gif
this.ContentDisposition = null
InBlock.gif
this.FileName = null
InBlock.gif
this.FilePath = null
InBlock.gif
this.ContentType = null
InBlock.gif
this.Value = null
InBlock.gif
this.Length = null
ExpandedBlockEnd.gif}

None.gif
</SCRIPT>

转载于:https://www.cnblogs.com/tingfeng/articles/489735.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值