第2步是web.config中实现一个自己写的HttpHandler,主要针对*.rar,*.zip的请求,先判断请求来路,如果请求来路不是来自主机本身,则重定向到一个错误的页面即可.具体怎么实现你可以网上查下或者MSDN查下,很简单的..这时直接对文件的请求将不会发生下载效果了,而是被定向到另外个页面
第3步,数据库设计时,每条文件记录肯定要加个权限等级的字段,只有大于这个等级的用户才能下载..具体怎么判断是很简单的了...
还有,在输出下载文件列表时不要直接输出文件路径,而是 <a href="download.aspx?id=1">下载文件1</a>这样的路径,在download.aspx中根据传来的id从数据库获得文件信息,判断权限...权限通过,则Response.Redrict(文件路径),否则重定向到权限不足的错误页面
你建一个模版列,里面放一个LinkButton控件;下面是样例代码:
<asp:GridView ID="gridviewTest" runat="server" AutoGenerateColumns="false" OnRowDeleting="gridviewTest_RowDeleting">
<Columns>
<asp:TemplateField>
<ItemTemplate>
<asp:LinkButton ID="btnDownLoad" runat="server" Text="下载" CommandName="Delete"></asp:LinkButton>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
这个LinkButton触发了一个Delete删除事件,但是在这个事件里,你不要写删除代码,对你的功能是没有影响。
然后在页面的.cs文件里,会有一个gridviewTest_RowDeleting事件,你在这个事件中就可以写下载的代码了。
protected void gridviewTest_RowDeleting(object sender, GridViewDeleteEventArgs e)
{
GridViewRow gRow=gridviewTest.Rows[e.RowIndex]//锁定你要下载的行
//写下载代码
} 大体思路就是这些了,希望能够帮到你!
如果每一个人都有对应的文件,因为每个人都有一个独立的不可能重复的用户ID,在文件的数据库表中,一定有个用户ID,比如userid字段名,用户登录后,系统用session来保存当前用户的ID,所以,就用session("userid")去调取对应的文件附件地址来下载。例如:你没有提供资料,这里只能示例。
dim userfile
userfile=conn.execute("select myfiles from files where userid=session("userid")")(0)
这里,myfiles是files表中的文件名称(包括地址)
读出了userfile后,就可以通过<a href=<%=userfile%>>下载</a>这样的链接来下载了。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)