プロが教える店舗&オフィスのセキュリティ対策術

拡張子が.wmaや.wmvなどのファイルを直接リンク指定すると、
クリックしたときにプレイヤーが起動してしまい、ダウンロード
先を指定して保存させることが出来ません。

エキサイトミュージックストアなどのサイトでは、購入後最後に
ファイルをダウンロードする、というボタンがあり、それを押すと
プレイヤーが起動せずにファイルをダウンロードするダイアログ
が開くのですが、これはどのようなスクリプトを書けば出来る
のでしょうか?

ASPでスクリプトを組んでいますが、JavaScriptなどで対応出来る
のであればそれでもOKです。


どうすれば音楽や、動画ファイルをプレイヤーを起動させずにダウンロード
のダイヤログを表示させることが出来るのでしょうか?

A 回答 (2件)

この回答への補足

ご指導いただきました方法の場合、

<%
Response.Buffer = True
Response.Clear

Response.ContentType = "audio/x-ms-wma"
Response.AddHeader "Content-Disposition", "attachment;filename=aaa.wma"

Const adTypeBinary = 1
Dim strFilePath

strFilePath = "D:\aaa.wma"

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

objStream.Close
Set objStream = Nothing
%>

と、.wmaであればうまくいきました。ですが、.wmvの場合は、

Server.ScriptTimeoutの時間を長くし、
Response.AddHeader "Content-Length"で、書き込むヘッダー情報のバイト数を多くしたりするなど、まだ色々加えることで、何とかうまくいきました。

お礼代わりにソースをここに張りたいところですが、行数の制限があるため、簡単な解説で、お礼とさせていただきました。

ありがとうございました!

補足日時:2005/07/08 17:48
    • good
    • 0
この回答へのお礼

お返事ありがとうございます。ものすごい素直に、合わせ技、ということで、単純に以下の用にくっつけてみたのですが、

<%

'Set the content type to the specific type that you are sending.
Response.ContentType = "video/x-ms-wmv"
Response.AddHeader "ContentDisposition", "attachment;filename=aaa.wmv"

Const adTypeBinary = 1
Dim strFilePath

strFilePath = "D:\aaa.wmv" 'This is the path to the file on disk.

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

Response.BinaryWrite objStream.Read

objStream.Close
Set objStream = Nothing
%>

HTTP500 内部サーバーエラーになってしましました。何か根本的に
勘違いをしてしまっているのでしょうか?

お礼日時:2005/07/08 14:33

とりあえず、wmaやwmvに関連づけられているMIME Typeを変えてみてはいかがでしょうか?たぶんapplication/octet-streamでいいような気がします。


IISにMIME Typeを設定するところがあったと思いますので探してみてください。

この回答への補足

<%
Response.ContentType = "application/x-msdownload"
Response.AddHeader "ContentDisposition", "attachment;filename=aaa.wmv"%>

というASPスクリプトを作成して呼び出してみたところ、保存のダイヤログ
は表示されるようになったのですが、保存してみると、ファイルサイズが
0Kになってしまいます。このスクリプトの後にバイナリーを書き出す何か
を書き加えなくてはいけないのでしょうか?

補足日時:2005/07/07 23:32
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。

IIS上の設定では、三カ所、MIME Typeの設定をするところがありました。
一つは、サーバーのプロパティに。
二つめは、登録しているサイトのプロパティの中のHTTPヘッダーのところに。
三つめは、サイト内の各フォルダのプロパティの中にある、HTTPヘッダーのところに。

.wmvと.wmaが登録されているのは、サーバーのプロパティのところで、
ここの値を、元々の

.wma audio/x-ms-wma
.wmv video/x-ms-wmv

のところを、

.wma application/octet-stream
.wmv application/octet-stream

に変え、このサーバー上に置いた.wmvに直接アクセスしてみたところ、
やはりプレイヤーが起動してしまいました。

お礼日時:2005/07/07 21:17

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!