关于Asp.net目录下文件提供下载的权限

关于Asp.net目录下文件提供下载的权限,第1张

首先对iis进行配置,添加aspnet_isapi的应用程序通配符映射,使每次请求都托管给aspnet_isapi,这时才能确保对.rar之类的文件的请求可以由程序来处理...

第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>这样的链接来下载了。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9593102.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-30
下一篇 2023-04-30

发表评论

登录后才能评论

评论列表(0条)

保存