当前位置:asp编程网>技术教程>Asp教程>  正文

实现登录后才能下载

2007-11-15 09:15:14   来源:本站原创    作者:佚名   浏览量:1924   收藏
通常想实现用户登录后,才可以下载某此文件,可以用cookies和session来解决用户是否登录,然后根据cookies和session里面记录的值来确定是否给予下载。但是这样做有一个缺点:如果别人知道那个文件的路径,在IE中直接输入路径地址就可以下载了,这样的结果并不是我们想要的。
首先,我们要将保存文件虚拟主机上一个不可访问的目录soft,这样就不可以直接去下载了,所以要想下载,必须通过程序来下载。
index.html文件(用来提供下载)
<a href="down.asp?u=789.rar">下载</a>

down.asp
<!--#include file="download.asp"-->
<%
Dim u
u=request.querystring("u")
downloadFile "/soft/123.rar", u
%>

download.asp
<%
'author : lael 2006-2-20
function downloadFile(downfile, downname)
on error resume next

dlfile = server.MapPath(downfile)

Response.Buffer = True
Response.Clear

Set oStream = Server.CreateObject("ADODB.Stream")
oStream.Open
oStream.Type = 1

Set fso = Server.CreateObject("Scripting.FileSystemObject")
if not fso.FileExists(dlfile) then
      set fso = nothing 
   oStream.Close
      Set oStream = nothing 
   downloadFile = "error:1"
   exit function
end if
Set ofile = fso.GetFile(dlfile)
filesize = ofile.size

oStream.LoadFromFile(dlfile)
if err then  
   err.clear
   set ofile = nothing
      set fso = nothing
   oStream.Close
      Set oStream = nothing
   downloadFile = "error:2"
   exit function
end if

Response.AddHeader "Content-Disposition", "attachment; filename=" &#38; downname
Response.AddHeader "Content-Length", filesize
Response.CharSet="UTF-8"
Response.ContentType="text/plain"

Response.BinaryWrite oStream.Read
Response.Flush

set ofile = nothing
set fso = nothing
oStream.close
Set oStream = nothing

downloadFile = ""

end function

'/////////////////////

%>
-------------------------转贴请注名出处-------------------------------  

关于我们-广告合作-联系我们-积分规则-网站地图

Copyright(C)2013-2017版权所属asp编程网