我有一个使用 ASP Classic 构建的网站,并且在使用允许用户下载文件但隐藏文件路径的脚本时遇到了一些问题。
当用户在页面上时,他们会看到一个链接。链接编码如下:
<a href="download.asp?file=FILE-NAME-HERE" target="_blank">Download File</a>
此链接将他们带到 download.asp,其中运行代码以获取文件并交付它。这是我现在拥有的代码:
<%
const adTypeBinary = 1
dim strFilePath, strFile
strFilePath = "/_uploads/private/"
strFile = Request.QueryString("file")
if strFile <> "" then
'Set the content type to the specific type that you are sending.
Response.ContentType = "application/octet-stream"
Response.AddHeader "Content-Disposition", "attachment; filename=" & strFile
set objStream = Server.CreateObject("ADODB.Stream")
objStream.open
objStream.type = adTypeBinary
objStream.LoadFromFile(strFilePath & strFile)
response.binarywrite objStream.Read
objStream.close
Set objStream = nothing
end if
%>
这段代码是我从本网站上的两个问题(如何在经典 asp 中使用 vbscript 下载文件)和http://support.microsoft.com/kb/276488
然而,发生的事情是 download.asp 页面给了我一个“找不到文件”的错误,即使该文件正确地位于 Web 目录“/_uploads/private/”中。
文件类型可以是几种之一,包括 pdf、xls、docx 等。
我的代码中是否存在不允许找到该文件的内容?