[PHP-users 17185]iframe内からダウンロードCGIを経由したダウンロードの問題

SATOH Kiyoshi satoh0 @ hakuba.jp
2003年 8月 6日 (水) 19:54:31 JST


佐藤です。

#元々Javascript-MLに書いていたのですが、PHPで書いたダウンローダーを経由
#した場合にだけ問題が起るようなので、こちらにもポストさせて下さい。

 ファイルのリストをCGIから表示させ、CGI経由でダウンロードさせるようにし
たいのですが、その前に確認画面を出したいと考えています。
 Javascript で confirm を使って確認させ、その後 location.href でダウン
ローダーCGIを呼び出すと、そのファイルはうまくいくのですが、その後他のファ
イルをクリックするとエラーが出てしまいます。

 とりあえず、いくつか条件がそろわないとこうならないことがわかりました。

・ダウンローダーがCGIで書かれている
・frame内からダウンローダーが呼び出される

ということのようです。

http://hakuba.jp/satoh/test/test8.html
がその条件をすべて満たすもので、2回目のダウンロードでエラーになります。

ダウンローダーがCGIで書かれていない場合
http://hakuba.jp/satoh/test/test2.html
frame内から呼び出されない場合
http://hakuba.jp/satoh/test/test7.html
は、問題なくダウンロードを行うことが出来ます。

 ダウンローダーCGIを経由した場合だけ問題が起るため、ダウンローダーの書
き方がまずいのかと思っています。
 なにか解決法はないでしょうか。


--- test8.html --
IFRAME内の場合<BR>
<IFRAME src="test7.html">
</IFRAME>
---

--- test7.html ---
<HTML>

<HEAD>
<SCRIPT Language="JavaScript">
function confirmDownload( num )
{
  if ( confirm( "ダウンロード確認" ) ) {
    location.href = "down.php?num=" + num;
  }
}
</SCRIPT>
</HEAD>

<BODY>
<TABLE>
<TR onClick="confirmDownload(1)"><TD>file1</TD></TR>
<TR onClick="confirmDownload(2)"><TD>file2</TD></TR>
</TABLE>
<BODY>

<HTML>
---

--- down.php ---
<?
$num = $_GET[ 'num' ];
$file = "data/$num.zip";

header( "Content-Disposition: attachment; filename=\"". basename( $file ) ."\"" );
header( "Content-Type: application/octet-stream" );

// ファイルを出力
readfile( $file );
?>
---

--- test2.html ---
IFRAME内の場合<BR>
<IFRAME src="test1.html">
</IFRAME>
---

--- test1.html ---
<HEAD>
<SCRIPT Language="JavaScript">
function confirmDownload( num )
{
  if ( confirm( "ダウンロード確認" ) ) {
    location.href = "data/" + num + ".zip";
  }
}
</SCRIPT>
<HEAD>

<BODY>
<TABLE>
<TR onClick="confirmDownload(1)"><TD>file1</TD></TR>
<TR onClick="confirmDownload(2)"><TD>file2</TD></TR>
</TABLE>
<BODY>
---


-- 
佐藤 潔 (SATOH Kiyoshi) <satoh @ hakuba.jp> <csml @ tcp-ip.or.jp>
【長野SOHOネットML】http://www.nagano.com/soho/
【中部スキーML】 http://www.tcp-ip.or.jp/~csml/
【フリースタイルスキーML】 http://www.tcp-ip.or.jp/~csml/fsml/



PHP-users メーリングリストの案内