ASP Classic で構築されている Web サイトがあり、ユーザーがファイルをダウンロードできるようにするスクリプトで問題が発生していますが、ファイルへのパスは隠されています。
ユーザーがページにアクセスすると、リンクが表示されます。リンクは次のようにコーディングされます。
<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からまとめました。
しかし、ファイルが Web ディレクトリ "/_uploads/private/" に正しくあるにもかかわらず、download.asp ページで "ファイルが見つかりません" というエラーが表示されます。
ファイルの種類は、pdf、xls、docx などのいくつかのいずれかです。
私のコードに、ファイルが見つからないようにする何かがありますか?