Excelブックをダウンロードさせたい
Internet Explore を使っていると、Excelブックや Word文章にリンクを設定すると、左クリックでウィンドウ内でファイルを開いてしまいます。 便利な機能なのですが開かないでダウンロードするためには、わざわざ右クリックで [ 対象をファイルに保存 ] を選ばないといけません。
以下は Excel ファイルを開かずに強制的にダウンロードするためのサンプルになります。 バイナリデータとして読み込むために BASP21 を使用していますので、使用には BASP21 をインストールしていただく事が必要になります。
[ download.asp ]
<%@ LANGUAGE = VBSCRIPT %>
<%
Dim dat
Dim objBasp
Dim fname
Dim flfname
Dim bydata
flfname = Request("FILE")
'ファイル名の抜き出し処理
If InStr(flfname,"/") > 0 Then
fname = Split(flfname,"/")(ubound(Split(flfname,"/")))
ElseIf InStr(flfname,"\") > 0 Then
fname = Split(flfname,"\")(ubound(Split(flfname,"\")))
Else
fname = flfname
End If
Response.ContentType = "application/octet-stream;name=" & fname
Response.AddHeader "Content-Disposition","attachment;filename=" & fname
Set objBasp = Server.CreateObject("Basp21")
bydata = objBasp.BinaryRead(Server.MapPath(flfname))
Set objBasp = Nothing
Response.AddHeader "Content-Length", ubound(bydata) + 1
Response.BinaryWrite bydata
%>
このサンプルでは Excelファイルであろうと ActiveXによる実行をさせず、バイナリデータとしてダウンロードする事が出来ます。呼び出す際は以下のようにクエリを FILE で渡して指定します。
[ 呼び出し例 ]
<a href="download.asp?FILE=/sample.xls"> ダウンロード </a>
|