文件上传组件

五、将文件保存到数据库

    上一篇:功能介绍

    有时我们不想要其他人看到我们上传的文件,这时可以把文件保存到数据库中,利用BlueDoctor组件也可以轻松的完成这个工作.下面是一个实例.
<!---AddFile--->

<!-- #include file="conn.asp" -->
<%
dim testme,FileName,Folder,ContentType,Size
dim Athours,Source,Memo,FileInfo

Athours="dth"
Source="原创"
Memo="此处使用文件上传组件BlueDoctor.FileUp"

set testme=server.CreateObject("BlueDoctor.FileUp")
if testme.ReadFileInfo() then
  FileName=testme.FileName
  Folder=testme.Folder
  ContentType=testme.ContentType
  Size=testme.GetFileSize
else
  response.Write "文件保存失败!<br>"
  response.Write testme.ErrDescription
  response.End
end if

FileInfo=""
FileInfo= "<br>文件的大小:" & cstr(Size) & "字节"
FileInfo=FileInfo & "<br>文件名: " & FileName
FileInfo=FileInfo & "<br>原始文件: " & Folder
FileInfo=FileInfo & "<br>传输类型: " & ContentType
FileInfo=FileInfo & "<br>发表日期: " & cstr(now)
FileInfo=FileInfo & "<br>作者/发表人:"& Athours
FileInfo=FileInfo & "<br>来源: "& Source
FileInfo=FileInfo & "<br>说明: "& Memo
response.write FileInfo

'on error resume next
if isEmpty(session("EditID")) then session("EditID")=0
ID=session("EditID") ''修改的標誌
set rec=server.createobject("ADODB.recordset")
if ID=0 then
  rec.Open "SELECT * FROM FileInfo where id is null",conn,1,3
  rec.addnew
else
  session("EditID")=0
  rec.Open "SELECT * FROM FileInfo where id=" & cstr(ID),conn,1,3
  if rec.eof or rec.bof then
    response.write "No Record Found!,ID is " & cstr(ID)
    response.end
  end if
end if

rec("img").appendchunk testme.GetFileData()
'获取文件字节流
set testme=nothing
rec("ContentType")=ContentType
rec("FileName")=FileName
rec("Size")=Size
rec("Athours")=Athours
rec("Ondate")=now
rec("Source")=Source
rec("Memo")=Memo
rec("UserID")=session("UserID")

rec.update
rec.close
set rec=nothing
set conn=nothing
if err<>0 then
  response.write "<br>"+err.discription
else
  response.write "<p>文件保存成功!</p><br><a href='javascript:history.back(-1)'>返回</a>"
end if

%>
 

'显示文件内容的程序

<!--showFile.asp-->

<!-- #include file="conn.asp" -->
<%
'on error resume next
ID=request("id")
'if ID="" or isEmpty( ID) then ID=1

set rec=server.createobject("ADODB.recordset")
rec.Open "SELECT * FROM FileInfo where id=" & cstr(ID),conn,1,1

if rec.BOF or rec.EOF then
response.Write "没有找到该记录!"
else
response.ContentType =clearCache(rec("ContentType"))
response.BinaryWrite rec("img")

end if

function clearCache( str)
dim temp,c
temp=""
c=""
for i=1 to len(str)
temp=mid(str,i,1)
if asc(temp)<32 then exit for
c=c+temp
next
clearCache=c
end function

%>

显示图片的实例程序

<!--ImgDemo.htm-->
<!--例如:<IMG alt="" src="ShowFile.asp?id=90"> -->

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title></title>
<meta name="GENERATOR" content="Microsoft Visual Studio.NET 7.0">
<meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
</head>
<body>
<P><FONT face="宋体">图片显示功能</FONT></P>
<P>
<TABLE id="Table1" cellSpacing="1" cellPadding="1" width="300" border="1">
<TR>
<TD><FONT face="宋体">我的图片</FONT></TD>
<TD><FONT face="宋体"><IMG alt="" src="ShowFile.asp?id=90"></FONT></TD>
</TR>
<TR>
<TD><FONT face="宋体">test</FONT></TD>
<TD><FONT face="宋体">test</FONT></TD>
</TR>
</TABLE>
</P>
</body>
</html>

作者:BlueDoctor 时间:2003年2月28日

有任何问题请和我联系:蓝色医生文件上传组件免费下载 QQ:147438367