【问题标题】:Force user to download a file强制用户下载文件
【发布时间】:2012-10-07 03:08:52
【问题描述】:

我想强制用户下载文件。我的网站文件夹路径是D:\websites\domain\ 文件路径为E:\folder\file.bak,

ASP - VBScript

<%

   Dim Stream
   Dim Contents
   Dim FileName
   FileName = "E:\db\A101.bak"
   Response.ContentType = "application/octet-stream"
   Response.AddHeader "content-disposition", "attachment; filename=" & FileName
   Set Stream = server.CreateObject("ADODB.Stream")
   Stream.Open
   Stream.LoadFromFile Server.MapPath(FileName)
   Contents = Stream.ReadText
   Response.BinaryWrite Contents
   Stream.Close
   Set Stream = Nothing

%>

如果文件在我的网站文件夹中,它工作得很好,但是如果我使用路径 E:\db\A101.bak 给我一个错误,File not Found。由于安全原因,我无法在网站文件夹中移动文件。帮帮我

【问题讨论】:

  • 你为什么要表现得像恶意软件?
  • Web 服务器不应允许访问网站文件夹之外的任何内容。此行为是设计使然。请退后一步,描述您要解决的问题,而不是您认为的解决方案。
  • 他在做什么有什么问题吗?他正在加载特定文件并将其发送给客户端。我认为这背后有一些原因,并且可能有一些安全措施只允许特定的访问。如果该文件位于网站文件夹中,那么任何人都可以检索该文件。通常这样的问题是网站正在运行的用户没有访问此文件夹的权限,但如果您收到未找到文件的错误,则没有。
  • 如果这只是提供网站目录之外的文件的情况 - 您可以使用的另一个选项是 IIS 虚拟目录:technet.microsoft.com/en-us/library/cc771804(v=ws.10).aspx - 您可以使用只读凭据等映射虚拟文件夹

标签: asp-classic vbscript


【解决方案1】:

由于您已经知道您的物理路径,因此您不需要 Server.MapPath 方法。 (此方法通常用于将虚拟路径转换为物理路径) Server.MapPath 方法可能不适用于网站结构之外的路径...

所以,尝试使用

Stream.LoadFromFile FileName

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-03-28
  • 1970-01-01
  • 2012-06-11
  • 2012-12-31
  • 1970-01-01
  • 2013-06-20
相关资源
最近更新 更多