通过IIS强制下载网络共享上的文件

通过IIS强制下载网络共享上的文件,iis,download,virtual-directory,network-share,Iis,Download,Virtual Directory,Network Share,我正在写一个快速网页来控制对基于网络的音频文件存储库(讲座录音)的访问。音频文件保存在SAN上,并使用UNC共享从web服务器访问 我想强制显示一个“保存”对话框,因为在测试期间,我们发现一些web浏览器使保存mp3文件变得非常困难。重要的是,我们的学生可以保存文件,而不是只听它 另一个要求是,dowload链接只有在学生单击同意尊重文件版权的复选框后才可用 我首先尝试使用网站上的虚拟目录,该目录已作为域用户进行身份验证。但是,如果我用命令按钮打开音频文件的URL,web浏览器可能会立即尝试播放

我正在写一个快速网页来控制对基于网络的音频文件存储库(讲座录音)的访问。音频文件保存在SAN上,并使用UNC共享从web服务器访问

我想强制显示一个“保存”对话框,因为在测试期间,我们发现一些web浏览器使保存mp3文件变得非常困难。重要的是,我们的学生可以保存文件,而不是只听它

另一个要求是,dowload链接只有在学生单击同意尊重文件版权的复选框后才可用

我首先尝试使用网站上的虚拟目录,该目录已作为域用户进行身份验证。但是,如果我用命令按钮打开音频文件的URL,web浏览器可能会立即尝试播放它

相反,我尝试使用ADODB.stream并使用stream.LoadFromFile将文件发送给具有适当内容配置的学生,以强制下载。由于LoadFromFile使用文件路径,因此我无法使用IIS虚拟目录,因此必须让网站的匿名登录访问我的网络共享。我通过让它作为域帐户运行来做到这一点,但这让我有点紧张,因为我认为它不太安全

即使这样,我仍然无法达到预期的目标,因为stream.LoadFromFile命令似乎拒绝从网络共享读取文件。它给出了一个身份验证错误,即使我用来运行站点的域登录具有对该网络共享的完全访问权限


是否有其他方法来实现我的目标的建议?

将文件返回浏览器时,将mime类型设置为“application/x-unknown”-这将导致浏览器要求您下载,因为它不知道如何处理它


浏览器可能会读取文件扩展名并尝试使用智能,但对此您无能为力。

将文件返回到浏览器时,将mime类型设置为“application/x-unknown”-这将导致浏览器要求您下载,因为它不知道如何处理它


浏览器可能会读取文件扩展名并尝试变得聪明,但对此你无能为力。

我喜欢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扩展名压缩音频文件。这将产生同样的效果,也会减少下载所需的带宽。如果你是动态的,你可能想考虑压缩你的压缩文件。 请尝试在此处查看完整代码-


你也可以将版权认证添加到预下载检查中。

我喜欢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扩展名压缩音频文件。这将产生同样的效果,也会减少下载所需的带宽。如果你是动态的,你可能想考虑压缩你的压缩文件。 请尝试在此处查看完整代码-


您也可以将版权认证添加到预下载检查中。

您最好的选择是添加以下您的响应标题

内容处置:附件;filename=fname.ext


请参阅:有关更多信息,您最好添加以下响应标题

内容处置:附件;filename=fname.ext


请参阅:有关更多信息

谢谢,这成功了。我在虚拟目录的IIS中设置MIME类型,将mp3文件扩展名设置为type application/x-unknown,这样就达到了我想要的结果。感谢您的及时回答,Brent的解决方案在将来也会非常有用。对于大多数常见的文件类型,尤其是IE,这将失败。谢谢,这就成功了。我在虚拟目录的IIS中设置MIME类型,将mp3文件扩展名设置为type application/x-unknown,这样就达到了我想要的结果。感谢您的及时回答,Brent的解决方案在未来也会非常有用。对于大多数常见的文件类型,尤其是IE,这将失败。压缩MP3文件不是正确的做法。MP3已经是一种压缩格式,因此他从中几乎得不到任何好处,特别是考虑到大多数IIS安装都配置为HTTP压缩,而客户端接受它。更改mime类型可能是最好的选择。压缩MP3文件不是正确的做法。MP3已经是一种压缩格式,因此他从中几乎得不到任何好处,特别是考虑到大多数IIS安装都配置为HTTP压缩,而客户端接受它。更改mime类型可能是最好的选择。在web上的所有解决方案中,我尝试过的没有一个适用于所有浏览器。但是,这个解决方案(在IIS中更改HTTP响应头)是我发现的唯一适用于所有浏览器的解决方案,到目前为止,我的所有文件类型、音频、图像和视频都适用。在web上的所有解决方案中,我试过的没有一个适用于所有浏览器。但是,这个解决方案(在IIS中更改HTTP响应头)是我发现的唯一适用于所有浏览器以及到目前为止所有文件类型、音频、图像和视频的解决方案。