出来るのだASP Q&A掲示板(過去LOG)  訪問数 52046 昨日 889 今日 776
    【PR】 パソコン入門からIT専門書まで幅広く取り揃えています。セブン-イレブン受取り手数料無料のセブンアンドワイ。
Topに戻る 掲示板に戻る 検索 削除 管理者

ファイルのダウンロード中に待ち受け画面を表示したい   おくらさん [2005/10/03 19:00:57] [5311]
  Re:ファイルのダウンロード中に待ち受け画面を表示したい   YasNet(管理人)さん [2005/10/04 9:04:03] [5312]
    Re:ファイルのダウンロード中に待ち受け画面を表示したい   おくらさん [2005/10/04 9:33:52] [5313]
      Re:ファイルのダウンロード中に待ち受け画面を表示したい   YasNet(管理人)さん [2005/10/04 17:49:18] [5316]

[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
Program By YasNet