ASP.NET的临时文件下载链接
|
我想知道如何在有限的时间内为我的文件生成临时下载地址.我知道这不是最好的做法,可能使用HttpHandlers是根据
http://www.devx.com/codemag/Article/34535/1954的方法
解决方法首先,您需要某种形式的标识符.你建议一个GUID,这很容易做到,Guid.NewGuid().ToString(“n”)为你提供了这样的标识符.你谈到URI重写,但这真的只是一点点抛光.您当然可以进行一些重写,将/ myFiles / a948ec43e5b743548fd9a77c462b953e转换为/myFiles/download.aspx?id=a948ec43e5b743548fd9a77c462b953e,甚至(在检查查找表后)到myFiles / download.aspx?id = 3或myFiles / download.aspx?文件名= myNewDownload.pdf.这与任何其他URI重写任务相同,所以现在让我们忽略它并假设我们有一个请求进入/myFiles/download.aspx?id=a948ec43e5b743548fd9a77c462b953e,无论是否是由于重写. 好的.你有一个标识符,你需要将它与三个东西相匹配:一个流,一个内容类型和一个到期日. 您可以将所有这些存储在文件系统中,所有这些都存储在数据库中或数据库中的详细信息中,包括将流存储为文件系统中文件的路径. 让我们说它存储在文件系统中,名称如下: a948ec43e5b743548fd9a77c462b953e.application_pdf和a5d360178ec14e97abd556ed4b7709cf.text_plain; charset = utf-8 请注意,我们没有使用普通的Windows文件扩展名,因此我们很好地处理了上传机器与您的服务器绑定不同的情况. 如果a948ec43e5b743548fd9a77c462b953e是需要的项目,我们首先查看创建日期,如果它太久以前(文件已过期),我们发送一个410 GONE标题,并显示一条错误消息,说明文件已过期(我们也可以删除此时文件清理用法 – 或者可能截断它以使其保留文件曾经存在的记录,但是存储为0字节. 否则,我们将Response.ContentType设置为“application / pdf”,然后将Response.TransmitFile设置为发送文件. 如果我们以不同于文件的方式存储流,我们希望以小块(4096很好地匹配系统其他部分中的其他缓冲区)发送它,并且在它是非常大的调用响应的情况下.定期刷新()以防止内存问题. 这是你完成的基本系统. Niceties将包括存储原始文件名并将其发送到内容处置标头中,并遵守Range请求,以便用户可以恢复失败的下载而不必从头开始. 所有这些都与用于确保只有正确的人拥有该文件的任何身份验证非常正交 – 您可以将其与任何类型的登录系统一起使用,或者您可以将其公开但有时间限制. (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net – 什么是连接池?
- asp.net – 基于Web的可视化查询构建器
- 如何在asp.net MVC 3中获取当前的视图名称?
- asp.net – Visual Studio 2010和Visual Studio 2012中的co
- asp.net – 强制IIS快速到经典管道模式
- asp.net-mvc – DotNetOpenAuth:消息签名不正确
- ASP.NET实现的简单易用文件上传类
- asp.net-mvc-2 – 使用ASP.NET MVC 2时更好地保留过滤选项的
- asp.net – Application_End应该在自动App Pool Recycle上启
- asp.net – Url片段为空
- asp.net-mvc-4 – MVC 4如果经过身份验证,则从登
- asp.net-mvc – 更改的域错误 – OpenId授权请求
- asp.net-mvc – redirectToAction()和View()之间
- 当“必须”我使用asp.net CreateChildControls()
- 基于声明的身份 – 在asp.net MVC5 EF6中使用流畅
- asp.net – 在web.config中将子文件夹重写为子域
- Asp.Net Identity – 在运行时设置CookieDomain
- 如何显示或隐藏基于角色的控件 – ASP.NET MVC 4
- asp.net-mvc-4 – ASP.NET MVC 4单独项目中的区域
- asp.net三层架构增删改查
