出来るのだASP Q&A掲示板(過去LOG)
訪問数 52046
昨日 889
今日 776 【PR】 パソコン入門からIT専門書まで幅広く取り揃えています。セブン-イレブン受取り手数料無料のセブンアンドワイ。 |
![]() ![]() ![]() ![]() ![]() |
![]() ![]() |
![]() ![]() ![]() |
[5311] ファイルのダウンロード中に待ち受け画面を表示したい |
投稿者:おくらさん 2005/10/03 19:00:57 |
教えてくださいませ。 サーバにあるPDFファイルをダウンロードさせようとしています。 PDFファイルは開かずに強制的にダウンロードするためにバイナリデータとして読み込みこんでいます。 いろいろサンプルを調べて大容量ファイルでも対応できるようにBASP21を使用するようにしました。 ダウンロード最中に待ち受け画面を表示したいのですが、どうしたらよいでしょうか? 現在のサンプルをは以下となっています。2つASPを用意しています。 001.asp ダウンロード対象を指定するASP 002.asp ダウンロードのASP 001は002をResponse.Redirectしてだけで画面は変わりません。001に待ち受け画面を入れようとしても、リロードされないので、待ち受けできません・・・ 002に待ち受け画面等の処理を入れると、ダウンロードすらされなくなってしまいます・・・ 【001.asp】 <% Option Explicit Response.Expires = 0 Call Response.AddHeader("Cache-Control", "No-Cache") Dim pdffile If Request.QueryString("mode")<>"" Then pdfFile = Request.QueryString("pdfname") Response.Redirect "002.ASP?FILE=" & "c:\" & pdfFile Response.End End If %> <HTML> <HEAD> <META HTTP-EQUIV="Content-type" CONTENT="text/html; charset=Shift_JIS"> <TITLE>PDFファイル一覧</TITLE> </HEAD> <body> <form name="form1" method="post"> <CENTER> <TABLE border="1" cellPadding="2" cellSpacing="0"> <TR> <TH width=" 75" nowrap>ダウンロード</TH> <TH width="300" nowrap>PDF名</TH> </TR> <TR> <TD width=" 75" nowrap align="center"><INPUT TYPE=BUTTON TABINDEX=10 NAME=SUBMIT VALUE="1" CLASS=BTW30 onclick="return BTN_SEC('a.pdf')" ></TD> <TD width="300" nowrap align="left">a.pdf</TD> </TR> <TR> <TD width=" 75" nowrap align="center"><INPUT TYPE=BUTTON TABINDEX=10 NAME=SUBMIT VALUE="2" CLASS=BTW30 onclick="return BTN_SEC('b.pdf')" ></TD> <TD width="300" nowrap align="left">b.pdf</TD> </TR> </TABLE> </CENTER> </FORM> </body> </html> <SCRIPT LANGUAGE="javascript"> <!-- function BTN_SEC(idx) { var urlstr; urlstr = "001.asp?mode=0"&pdfname=" + idx location.href = urlstr; return true; } //--> </SCRIPT> 【002.asp】 <%@ LANGUAGE = VBSCRIPT %> <% Option Explicit 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 %> |
[5312] Re:ファイルのダウンロード中に待ち受け画面を表示したい |
投稿者:YasNet(管理人)さん 2005/10/04 9:04:03 |
こんにちは YasNet(管理人)です。 1.別ウィンドを使う 001→別ウィンド→002 2.もうひとつ別の画面を用意することで回避できると思います。 001→待ち受け画面→002って感じでしょうか いづれにせよ、001から002を呼び出すと画面を切り替えるのは 私の知識では難しいと思います。 それでは 失礼致します。 |
[5313] Re:ファイルのダウンロード中に待ち受け画面を表示したい |
投稿者:おくらさん 2005/10/04 9:33:52 |
こんにちは。早速のご回答ありがとうございます。 > 2.もうひとつ別の画面を用意することで回避できると思います。 > 001→待ち受け画面→002って感じでしょうか 上記方法ですが、待ち受け画面は002の終了を検知する方法があるのでしょうか? 待ち受け画面は002をResponse.Redirectで呼び出すと、待ち受け画面のASP処理は終わってしまいます。 代わりに002の処理の最後にResponse.Redirect 待ち受け画面(001)等入れると、保存ダイアログすら出なくなってしまいます。 そもそも002は非同期で動いている感じなので、無理なのでしょうかね^^; |
[5316] Re:ファイルのダウンロード中に待ち受け画面を表示したい |
投稿者:YasNet(管理人)さん 2005/10/04 17:49:18 |
こんにちは YasNet(管理人)です。 > 上記方法ですが、待ち受け画面は002の終了を検知する方法があるのでしょうか? クライアントスクリプトを併用すれば 可能だと思いますよ う〜ん、厳密に言うと 待ち受け画面だけではなく、もう一画面必要で(フレーム分割で0フレーム用意するなど・・・) その画面から、ダウンロードする画面を監視するんです。 確かスクリプトで描画完了のイベントがひらえたと思います・・・ 参考になればよいのですが・・・ それでは 失礼致します。 |
TreeBBS For ASP V.0.1.3 |