WEB相談室

Webページ作成に関しての何でも掲示板です。

タイトル:圧縮ファイル以外のダウンロード

0:[投稿] NR [2004/03/10 13:11 ][環境:IE5.5 わかりません]

お世話になります。
過去投稿を読み、投稿させていただきました。

いま、表記の通り、xls,docなどのファイルを一回のクリックでダウンロードするページを作っています。

過去投稿http://www.ybi.co.jp/koike/qa2500/qa2671.htmを参考にして、htmlの方で<a href="a.asp">A.xls</a>とし、
a.aspの方で
<%
Dim objStream
Dim strFilePath
Const adTypeBinary = 1

Response.ContentType = "application/octet-stream "

Response.AddHeader "content-disposition","attachment; filename=A.xls"

strFilePath = "d:\temp\A.xls"

Set objStream = Server.CreateObject("ADODB.Stream")
objStream.Open
objStream.Type = adTypeBinary
objStream.LoadFromFile strFilePath

Response.BinaryWrite objStream.Read
objStream.Close
Set objStream = Nothing
%>
と記述してダウンロードウィンドウを出しています。
この方法だと、ダウンロードさせる1ファイルにつき、
1つのaspが必要になり、ファイル数が多くなってしまいます。
もう少しスマートなやり方を考え中なのですが、いい方法が思いつき
ません。
私はcgiの知識が全く無いので、aspを使って実現できればと思います。
大変申し訳ありませんが、お力を貸してください。お願いします。


1:[回答] のぐりん [2004/03/11 09:25 ]

例えば、
<a href="a.asp?f=A.xls">A.xls</a>
としておき、

受け取る側で、
strFilePath = "d:\temp\" & RequestQueryString("f")
としておけば、1つのファイルで済むと思います。


2:[回答] NR [2004/03/11 10:10 ]

のぐりんさん、回答ありがとうございます。

勉強不足ですみません。
<a href="a.asp?f=A.xls">
という方法があったなんて知りませんでした。

早速試させて頂きましたが、ASPでエラーになってしまいました。
(型が一致しません)

aspのソースは下記の2行を変えただけです。

Dim RequestQueryString
strFilePath = "d:\temp\" & RequestQueryString("f")

大変申し訳ありませんが、ご教示頂ければ幸いです。
宜しくお願いします。


3:[回答] NR [2004/03/11 10:19 ]

自己レスです。

すみません、私の間違いでした。
Request.QueryString("f")  で"."を入れていませんでした。

のぐりんさん、本当にありがとうございました。
助かりました!


4:[完了] NR [2004/03/11 13:19 ]

完了しました。


5:[完了] のぐりん [2004/03/11 16:21 ]

Dim Request.QueryString
は入りません。
というか、あるとまずいかもしれません。

IISのヘルプなどで、Requestを調べてみてください。


6:[完了] NR [2004/03/11 16:47 ]

すみません、私も気付きました。
書き込み、ありがとうございます。
お手数お掛けしましたm(_ _)m


7:[完了] AC [2004/03/11 19:38 ]

>>1
strFilePath = "d:\temp\" & RequestQueryString("f")
というのだと、a.asp?f=..%5Cfilename でアクセスすると、Dドライブの
任意のファイルにアクセスできてしまいます。

回答(必須): 状態:

お名前(必須):

e-mail:

URL:




[戻る]

ChaichanPAPA's World