当文件上传的时候,asp可以采用fso或数据库方式来保存文件数据(有些服务器并没有提供fso功能)。这里我采用数据库来保存用户所上传的文件,采用数据库的优点我就不说了,总之很多。还有一个原因就是iis限制了文件上传的大小(大概最大200kb吧),使用数据库方式可以采用续传技术突破这个限制,可以上传很大的文件,很大很大,无限大,……。
(哈哈,废话讲了一大堆,下面讲讲实现的方法)
● 第一步:在服务器上建立一个数据库(access、sql-server、mysql均可以),简单一点就access吧。数据库内建立两个表:
上传用户管理用:admin(id, name, password, type)
保存上传文件数据:files(id, parentid, filename, filelength, filetype, filedata, update, userid)。
如果filelength=0,则表示其为文件夹,并且为每个用户建立一个根文件夹。
● 第二步:建立用户登陆页面,并使用session将用户的id保存起来,用于限制其对文件的操作。
session("name") = list("sname")
session("uid") = list("id")
● 第三步:建立用户主页面(显示用户上传过的文件)
strsql = "select * from files where parentid=" & userrootid userrootid 为用户根文件夹的id
strsql = strsql & " and userid=" & session("uid")
strsql = strsql & " order by filename"
● 第四步:上传文件页面
list.addnew
list("parentid") = userrootid
list("filename") = form("name")
list("filelength") = form("length")
list("filetype") = form("type")
list("filedata").appendchunk midb(sdata,form("start"),form("length"))
list("userid") = session("uid")
list("update") = now()
list.update
● 第五步:文件管理操作(使用文件的id对文件进行表识,并且对用户的操作进行限制)
删除:"delete * from files where id=" & iid & " and userid=" & session("uid")
下载:"select * from files where id=" & iid & " and userid=" & session("uid")
set conn = server.createobject("adodb.connection")
conn.open myconnstr
set list = conn.execute("select * from files where id=" & iid & " and userid=" & session("uid"))
if not list.eof then
if list("filelength") > 0 then
response.addheader "content-disposition", "inline; filename=" & list("filename")
response.contenttype = list("filetype")
response.binarywrite(list("filedata").getchunk(list("filelength")))
end if
end if
● 再完成一些其他的辅助操作页面即可。当然由于浏览器的限制,文件上传的续传技术不能直接使用,只能通过客户端软件来实现。网络上有个软件叫“上传文件管理器”(包含asp源代码),实现了上面的功能。下面我们将讨论如何利用这个软件来建立我们自己的虚拟ftp服务器。
上传文件管理器的下载地址:http://www.blue999.com/webfiles/uploadfiles_setup.exe
文章整理:站长天空 网址:http://www.z6688.com/
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!




