我正在编写一个快速网页来控制对基于Web的音频文件存储库(讲座录音)的访问。音频文件保存在SAN上,并使用UNC共享从Web服务器访问。
我想强制出现一个“保存”对话框,因为在测试过程中我们发现某些网页浏览器很难保存mp3文件。重要的是我们的学生可以保存文件,而不是只是听它。
另一个要求是,只有在学生点击同意尊重文件版权的复选框后,才能使用下载链接。
我首先尝试在网站上使用经过身份验证的域用户虚拟目录。但是,如果我使用命令按钮打开音频文件的URL,Web浏览器可能会立即尝试播放它。
除此之外,我尝试使用ADODB.stream并使用stream.LoadFromFile将文件发送给具有适当内容处置的学生以强制下载。由于LoadFromFile使用文件路径,因此无法使用IIS虚拟目录,因此必须授予网站对我的网络共享的匿名登录访问权限。我通过将其作为域帐户运行来完成此操作,但这让我有点紧张,因为我认为它不太安全。
即便如此,我仍然无法达到预期目标,因为stream.LoadFromFile命令似乎拒绝从网络共享中读取文件。即使我用于运行站点的域登录具有对该网络共享的完全访问权限,它也会出现身份验证错误。
有关实现目标的替代方法的任何建议吗?
答案 0 :(得分:2)
将文件返回浏览器时,将mime-type设置为“application / x-unknown” - 这将导致浏览器要求您下载,因为它不知道如何处理它。
浏览器有可能会读取文件扩展名并尝试变得聪明,但是你无能为力。
答案 1 :(得分:2)
答案 2 :(得分:0)
我喜欢ck改变mime类型的答案(如果我排名,我会投票)。这将导致无法解决问题。
您可以修改响应标头以更改mime类型而不是使用ADODB请尝试以下代码。
Response.Clear()
Response.AddHeader("Content-Disposition", "attachment; filename=" & file.Name)
Response.AddHeader("Content-Length", file.Length.ToString())
Response.ContentType = "application/octet-stream"
Response.WriteFile(file.FullName)
Response.End 'if file does not exist
您还可以尝试使用ZIP扩展程序压缩音频文件。这将具有相同的效果,并且还减少了下载所需的带宽。如果动态执行此操作,您可能需要考虑缓存压缩文件。
请尝试查看完整代码 - http://www.xefteri.com/articles/show.cfm?id=8
您也可以将版权归化添加到预下载检查中。