• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:音楽・動画ファイルをプレイヤーを起動させずにダウンロードさせる)

音楽・動画ファイルをプレイヤーを起動させずにダウンロードさせる方法

このQ&Aのポイント
  • 拡張子が.wmaや.wmvなどのファイルを直接リンク指定すると、プレイヤーが起動してしまい、ダウンロード先を指定できない問題があります。
  • エキサイトミュージックストアなどのサイトでは、購入後最後にファイルをダウンロードするダイアログが表示され、プレイヤーが起動せずに直接ファイルをダウンロードすることができます。
  • この問題を解決するためには、JavaScriptなどのスクリプトを使用することで、プレイヤーの起動を回避し、ダイヤログを表示させることができます。ASPでスクリプトを組むことも可能です。

質問者が選んだベストアンサー

  • ベストアンサー
  • todo36
  • ベストアンサー率58% (728/1234)
回答No.2
Rubellite
質問者

お礼

お返事ありがとうございます。ものすごい素直に、合わせ技、ということで、単純に以下の用にくっつけてみたのですが、 <% '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 内部サーバーエラーになってしましました。何か根本的に 勘違いをしてしまっているのでしょうか?

Rubellite
質問者

補足

ご指導いただきました方法の場合、 <% 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"で、書き込むヘッダー情報のバイト数を多くしたりするなど、まだ色々加えることで、何とかうまくいきました。 お礼代わりにソースをここに張りたいところですが、行数の制限があるため、簡単な解説で、お礼とさせていただきました。 ありがとうございました!

その他の回答 (1)

  • Bonjin
  • ベストアンサー率43% (418/971)
回答No.1

とりあえず、wmaやwmvに関連づけられているMIME Typeを変えてみてはいかがでしょうか?たぶんapplication/octet-streamでいいような気がします。 IISにMIME Typeを設定するところがあったと思いますので探してみてください。

Rubellite
質問者

お礼

ご回答ありがとうございます。 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に直接アクセスしてみたところ、 やはりプレイヤーが起動してしまいました。

Rubellite
質問者

補足

<% Response.ContentType = "application/x-msdownload" Response.AddHeader "ContentDisposition", "attachment;filename=aaa.wmv"%> というASPスクリプトを作成して呼び出してみたところ、保存のダイヤログ は表示されるようになったのですが、保存してみると、ファイルサイズが 0Kになってしまいます。このスクリプトの後にバイナリーを書き出す何か を書き加えなくてはいけないのでしょうか?

関連するQ&A