想上传一个文件到服务器指定目录,同时另上传N个字段到数据库,对该文件进行描述
现有代码可以实现上传文件功能,但无法实现上传字段到数据库,请教如何修改。
saveannounce_upload.asp 上传页  
------------------------------------  
<html>  
<head>  
<style type="text/css">  
body {font-size:9pt;}  
input {font-size:9pt;}  
</style>  
<title>文件上传</title>  
</head>  
<body>  
<form name="form" method="post" action="saveannouce_upfile.asp" enctype="multipart/form-data" >  
文件  
<input type="file" name="file1" size=10>  
<input type="submit" name="Submit" value="上传">  
</form>  
</body>  
</html>  ------------------------------------  
saveannouce_upfile.asp 保存文件到服务器  
------------------------------------  
<!--#include FILE="upload.inc"-->  
<html>  
<head>  
<title>文件上传</title>  
</head>  
<body>  
<%  
dim upload,file,formName,formPath  
set upload=new upload_5xSoft ''''建立上传对象  
formPath=upload.form("filepath") ''''在目录后加(/)  
if right(formPath,1)<>"/" then formPath=formPath&"/"  
for each formName in upload.file ''''列出所有上传了的文件  
set file=upload.file(formName) ''''生成一个文件对象  
if file.filesize<100 then  
response.write "<font size=2>请先选择你要上传的文件 [ <a href=# onclick=history.go(-1)>重新上传</a>  ]</font>"  
response.end  
end if  
if file.filesize>500*1000 then ''设置上传文件大小为500K  
response.write "<font size=2>文件大小超过了限制 500K [ <a href=# onclick=history.go(-1)>重新上传</a>  ]</font>"  
response.end  
end if  
if file.FileSize>0 then ''''如果 FileSize > 0 说明有文件数据  
file.SaveAs Server.mappath("updata\"&file.FileName) ''''保存文件  
end if  
set file=nothing  
next  
set upload=nothing  
response.write "<font size=2>文件上传成功 [ <a href=# onclick=history.go(-1)>继续上传</a> ]</font>"  
%>  
</body>  
</html>  
------------------------------------  
upload.inc 建立upload对象  
------------------------------------  
<SCRIPT RUNAT=SERVER LANGUAGE=VBSCRIPT>  dim upfile_5xSoft_Stream  Class upload_5xSoft  dim Form,File,Version  Private Sub Class_Initialize  
dim iStart,iFileNameStart,iFileNameEnd,iEnd,vbEnter,iFormStart,iFormEnd,theFile  
dim strDiv,mFormName,mFormValue,mFileName,mFileSize,mFilePath,iDivLen,mStr  
Version=""  
if Request.TotalBytes<1 then Exit Sub  
set Form=CreateObject("Scripting.Dictionary")  
set File=CreateObject("Scripting.Dictionary")  
set upfile_5xSoft_Stream=CreateObject("Adodb.Stream")  
upfile_5xSoft_Stream.mode=3  
upfile_5xSoft_Stream.type=1  
upfile_5xSoft_Stream.open  
upfile_5xSoft_Stream.write Request.BinaryRead(Request.TotalBytes)  vbEnter=Chr(13)&Chr(10)  
iDivLen=inString(1,vbEnter)+1  
strDiv=subString(1,iDivLen)  
iFormStart=iDivLen  
iFormEnd=inString(iformStart,strDiv)-1  
while iFormStart < iFormEnd  
iStart=inString(iFormStart,"name=""")  
iEnd=inString(iStart+6,"""")  
mFormName=subString(iStart+6,iEnd-iStart-6)  
iFileNameStart=inString(iEnd+1,"filename=""")  
if iFileNameStart>0 and iFileNameStart<iFormEnd then  
iFileNameEnd=inString(iFileNameStart+10,"""")  
mFileName=subString(iFileNameStart+10,iFileNameEnd-iFileNameStart-10)  
iStart=inString(iFileNameEnd+1,vbEnter&vbEnter)  
iEnd=inString(iStart+4,vbEnter&strDiv)  
if iEnd>iStart then  
mFileSize=iEnd-iStart-4  
else  
mFileSize=0  
end if  
set theFile=new FileInfo  
theFile.FileName=getFileName(mFileName)  
theFile.FilePath=getFilePath(mFileName)  
theFile.FileSize=mFileSize  
theFile.FileStart=iStart+4  
theFile.FormName=FormName  
file.add mFormName,theFile  
else  
iStart=inString(iEnd+1,vbEnter&vbEnter)  
iEnd=inString(iStart+4,vbEnter&strDiv)  if iEnd>iStart then  
mFormValue=subString(iStart+4,iEnd-iStart-4)  
else  
mFormValue=""  
end if  
form.Add mFormName,mFormValue  
end if  iFormStart=iformEnd+iDivLen  
iFormEnd=inString(iformStart,strDiv)-1  
wend  
End Sub  Private Function subString(theStart,theLen)  
dim i,c,stemp  
upfile_5xSoft_Stream.Position=theStart-1  
stemp=""  
for i=1 to theLen  
if upfile_5xSoft_Stream.EOS then Exit for  
c=ascB(upfile_5xSoft_Stream.Read(1))  
If c > 127 Then  
if upfile_5xSoft_Stream.EOS then Exit for  
stemp=stemp&Chr(AscW(ChrB(AscB(upfile_5xSoft_Stream.Read(1)))&ChrB(c)))  
i=i+1  
else  
stemp=stemp&Chr(c)  
End If  
Next  
subString=stemp  
End function  Private Function inString(theStart,varStr)  
dim i,j,bt,theLen,str  
InString=0  
Str=toByte(varStr)  
theLen=LenB(Str)  
for i=theStart to upfile_5xSoft_Stream.Size-theLen  
if i>upfile_5xSoft_Stream.size then exit Function  
upfile_5xSoft_Stream.Position=i-1  
if AscB(upfile_5xSoft_Stream.Read(1))=AscB(midB(Str,1)) then  
InString=i  
for j=2 to theLen  
if upfile_5xSoft_Stream.EOS then  
inString=0  
Exit for  
end if  
if AscB(upfile_5xSoft_Stream.Read(1))<>AscB(MidB(Str,j,1)) then  
InString=0  
Exit For  
end if  
next  
if InString<>0 then Exit Function  
end if  
next  
End Function  Private Sub Class_Terminate  
form.RemoveAll  
file.RemoveAll  
set form=nothing  
set file=nothing  
upfile_5xSoft_Stream.close  
set upfile_5xSoft_Stream=nothing  
End Sub  
Private function GetFilePath(FullPath)  
If FullPath <> "" Then  
GetFilePath = left(FullPath,InStrRev(FullPath, "\"))  
Else  
GetFilePath = ""  
End If  
End function  Private function GetFileName(FullPath)  
If FullPath <> "" Then  
GetFileName = mid(FullPath,InStrRev(FullPath, "\")+1)  
Else  
GetFileName = ""  
End If  
End function  Private function toByte(Str)  
dim i,iCode,c,iLow,iHigh  
toByte=""  
For i=1 To Len(Str)  
c=mid(Str,i,1)  
iCode =Asc(c)  
If iCode<0 Then iCode = iCode + 65535  
If iCode>255 Then  
iLow = Left(Hex(Asc(c)),2)  
iHigh =Right(Hex(Asc(c)),2)  
toByte = toByte & chrB("&H"&iLow) & chrB("&H"&iHigh)  
Else  
toByte = toByte & chrB(AscB(c))  
End If  
Next  
End function  
End Class  
Class FileInfo  
dim FormName,FileName,FilePath,FileSize,FileStart  
Private Sub Class_Initialize  
FileName = ""  
FilePath = ""  
FileSize = 0  
FileStart= 0  
FormName = ""  
End Sub  Public function SaveAs(FullPath)  
dim dr,ErrorChar,i  
SaveAs=1  
if trim(fullpath)="" or FileSize=0 or FileStart=0 or FileName="" then exit function  
if FileStart=0 or right(fullpath,1)="/" then exit function  
set dr=CreateObject("Adodb.Stream")  
dr.Mode=3  
dr.Type=1  
dr.Open  
upfile_5xSoft_Stream.position=FileStart-1  
upfile_5xSoft_Stream.copyto dr,FileSize  
dr.SaveToFile FullPath,2  
dr.Close  
set dr=nothing  
SaveAs=0  
end function  
End Class  
</SCRIPT>