上传|无组件关键词:ASP,无组件上传
关于无组件文件上传的文章已经很多了,所以在这里我不想再解释无组件文件上传的原理。在ASP中无法将二进制文件数据直接保存成文件,所以我们一般还是利用数据库来保存用户上传的文件。
1。数据库表结构(Access):
UserID:Text(保存上传文件的用户ID)
FileContentType:Text(用来保存上传文件的类型,eg:"Application/msword",主要用来使用户能正确下载此文件)
FileContent:OLE Object(保存文件数据)
2。HTML文件
muploadfile.htm
<Form name="upload_file" enctype="multipart/form-data" action="muploadfile.asp" method=post>
<input type=hidden name="UserID" value="abc">
<input type=hidden name="FileUploadStart"> '这里用来表示开始文件数据上传
File to send: 
<INPUT TYPE="file" name="file_up" size="30">
<INPUT TYPE="file" name="file_up" size="30">
<input type=hidden name="FileUploadEnd"> '这里用来表示文件数据结束
<input type=submit value=Submit>
</Form>
3。ASP文件
muploadfile.asp
<%
Response.Expires=0
Function bin2str(binstr) 
    Dim varlen,clow,ccc,skipflag 
    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 
                    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 
varByteCount = Request.TotalBytes
bnCRLF = chrB( 13 ) & chrB( 10 )
binHTTPHeader=Request.BinaryRead(varByteCount)        
Divider = LEFTB( binHTTPHeader,  INSTRB( binHTTPHeader, bnCRLF ) - 1 )
'开始读非文件域的数据
Do while lenB(binHTTPHeader)>46
    
    binHeaderData = LeftB(binHTTPHeader, INSTRB( binHTTPHeader, bnCRLF & bnCRLF )-1)
    strHeaderData=bin2str(binHeaderData)
    lngFieldNameStart=Instr(strHeaderData,"name="&chr(34))+Len("name="&chr(34))
    lngFieldNameEnd=Instr(lngFieldNameStart,strHeaderData,chr(34))
    
    
    strFieldName=Mid(strHeaderData,lngFieldNameStart,lngFieldNameEnd-lngFieldNameStart)
    strFieldName=Trim(strFieldName)
    strFieldName=Replace(strFieldName,vbcrlf,vbnullstring)
    
        '判断文件数据时候开始
    If strComp(strFieldName,"FileUploadStart",1)=0 Then
        binHTTPHeader=MIDB(binHTTPHeader,INSTRB( DataStart + 1, binHTTPHeader, divider ))
        exit do
    End if
    
    DataStart = INSTRB( binHTTPHeader, bnCRLF & bnCRLF ) + 4 
    DataEnd = INSTRB( DataStart + 1, binHTTPHeader, divider ) - DataStart
    binFieldValue=MIDB( binHTTPHeader, DataStart, DataEnd )
    strFieldValue=bin2str(binFieldValue)
&nb
无组件文件上传代码实例(作者:Starleee) (支持多文件上传及文
                    80酷酷网    80kuku.com 
       
  
 
 
  
