无组件文件上传代码实例

2018-09-06 12:29

阅读:405

  关于无组件文件上传的文章已经很多了,所以在这里我不想再解释无组件文件上传的原理。在ASP中无法将二进制文件数据直接保存成文件,所以我们一般还是利用数据库来保存用户上传的文件。

1。数据库表结构(access(小型网站之最爱)):
UserID:Text(保存上传文件的用户ID)
FileContentType:Text(用来保存上传文件的类型,eg:Application/msword,主要用来使用户能正确下载此文件)
FileContent:OLE Object(保存文件数据)

2。HTML文件
mPreviousFile.htm
<Form name=upload_file enctype=multipart/form-data action=mPreviousFile.asp method=post>
<input type=hidden name=UserID value=abc>
<input type=hidden name=FileUploadStart> 这里用来表示开始文件数据上传
File to send: <BR>
<INPUT TYPE=file name=file_up size=30><br>
<INPUT TYPE=file name=file_up size=30><br>
<input type=hidden name=FileUploadEnd> 这里用来表示文件数据结束
<input type=submit value=Submit>
</Form>

3。ASP文件
mPreviousFile.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))


评论


亲,登录后才可以留言!