スレッド表示 | フラット表示〕 全トピック 920 件中 769 番目 次≫ ≪前

ファイルダウンロード後のリンク

created: 2003-10-30 09:26 | modified: 2003-10-31 09:12 | reply: 6

[839] ファイルダウンロード後のリンク

user: ひぐりん | created: 2003-10-30 09:26
はじめまして、ひぐりんと申します
PHPでフレームのページを作成していますが、
メニューページと本体ページがあり、
本体側でファイルをダウンロードさせる
処理をする(保存ダイアログの表示)と
その後メニュー側でリンクをクリックしても
本体側が変更しないという現象がでています。
target="_top"は効くようなのですが・・・
なにかご存知の方がおられたら教えていただけますでしょうか
reply: 842 返信 編集 削除

[842] ????

user: hamaji | created: 2003-10-30 13:21
IEとOperaでテストしてみましたがとくに問題無しでしたが。。。
サンプル
//frame.php
<frameset rows="*" cols="200,*" framespacing="0" frameborder="1" border="3">
<frame src="hidari.php" name="hidari">
<frame src="migi.php" name="migi" scrolling="NO" noresize>
</frameset>
//hidari.php
<?php
echo "左です<br>\n";
?>
<p><a href="test1.php" target="migi">テスト1</a></p>
<p><a href="test2.php" target="migi">テスト2</a></p>
<p><a href="frame.php" target="_top">HOME</a></p>
<p><a href="migi.php" target="migi">右</a></p>
//migi.php
<body>
<?php
echo "右です<br>\n";
?>
<p><a href="./test.lzh">ダウンロード</a></p>
</body>

で試しましたが、hidari.phpのどのリンクをクリックしても正常でしたが。。。

何か足りないことがあればご指摘ください。
Parent: 839  reply: 848 返信 編集 削除

[848] 言葉足らずでした

user: ひぐりん | created: 2003-10-30 14:41
えっとですね、PHP内でCSVファイルを作成し、ページ読込時に
自動的にダウンロードのダイアログが開くように、ダウンロード様のヘッダを送る処理をPHPで書いたのです
以下のように↓
header("Content-Type: application/octet-stream");
header("Content-Disposition: attachment; filename=\"".basename($path_file)."\"");
header("Content-Length: ".$content_length);
するとファイルを保存した後、リンクが動かなくなったのです。
分かりにくくてすいません・・・
Parent: 842  reply: 849 返信 編集 削除

[849] Re.ブラウザは何をお使いですか?

user: hamaji | created: 2003-10-30 16:03
> えっとですね、PHP内でCSVファイルを作成し、ページ読込時に
> 自動的にダウンロードのダイアログが開くように、ダウンロード様のヘッダを送る処理をPHPで書いたのです
そういうことだったのですね。失礼しました。
で、ひぐりんさんのソースでテストしたところ、その症状が、出ました。
しかし、Operaで見るとリンクがちゃんと機能していたので、おそらく超イケてないIEのせいだと思います。
こないだPHP-usersのMLに似たような投稿があったので
http://ns1.php.gr.jp/mailman/namazu.cgi?query=CSV+%A5%C0%A5%A6%A5%F3%A5%ED%A1%BC%A5%C9&submit=Search%21&whence=0&max=20&result=normal&sort=score&idxname=php-users
などを参考にしてみてください。
今仕事中につき、時間がとれませんので、またあとで私のほうも調べてみます。
すいません。

#追記
#Operaで見るとリンクは正しく機能してましたが、ダウンロードが正しく行われませんでした。
#もう少し時間を下さい。
Parent: 848  reply: 850 返信 編集 削除

[850] ブラウザですが

user: ひぐりん | created: 2003-10-30 16:50
ありがとうございます、もちろんお暇な時で結構です
こちらでもいろいろ調べていますが
分かりませんでした
ブラウザは、IE6.0SP1でだめで、
5.5SP2の環境でもだめでした。
Parent: 849  reply: 857 返信 編集 削除

[857] IE×、Opera○

user: hamaji | created: 2003-10-31 00:09
遅くなりました。結果から言うとIEは×でした。
Operaではダウンロードを行うと別ウィンドウが開くようになっているのですが、それを設定で
同一ウィンドウで行うようにして、やってみたところ問題ナシでした。

先述の
#Operaで見るとリンクは正しく機能してましたが、ダウンロードが正しく行われませんでした。
というのは自分が書いたソースが間違ってました。(笑)
[サンプル]
<?php

$filename = "test.csv";

// テストデータの作成とりあえず5行とする
$array = array();
$data = array(1, 2, 3, 4, 5);
for ($i = 0; $i < 5; $i++) {
array_push($array, $data);
}

// CSVファイルの作成
$fp = fopen("./$filename", "w");
for ($i = 0; $i < count($array); $i ++) {
$putdata = implode($array[$i], ",");
$putdata .= "\n";
fputs($fp,$putdata);
}
fclose($fp);

// ファイルサイズの取得
$size = filesize("./$filename");

// ヘッダーの送信
header("Cache-Control: public");
header("Content-Type: text/csv");
header("Content-Type: application/octet-stream");
header("Content-Disposition: attachment; filename=" . $filename);
header("Content-Length: " . $size);

// これがなかったのでOperaで正しくダウンロードできなかった
readfile("./$filename");
exit;
?>
という感じです。

NetScapeでは試してませんがおそらく大丈夫でしょう。
これはIEの仕様なのかバグなのかわかりませんが、IEで実現させようとするなら、
なにかもう一工夫いるんではないでしょうか?
まったく、IEという奴は。。。

なかなか興味がある現象なのでまた時間があればトライしてみたいと思います。
Parent: 850  reply: 860 返信 編集 削除

[860] ありがとうございました

user: ひぐりん | created: 2003-10-31 09:12
うーん、やっぱりIEが原因だったんですね・・
しょうがない、IEでは、あきらめることにします
いろいろ調べていただきありがとうございました。
Parent: 857  返信 編集 削除
スレッド表示 | フラット表示〕 全トピック 920 件中 769 番目 次≫ ≪前
ページの一番上へ
Googleグックマークに登録 Yahooグックマークに登録 livedoorクリップに登録 @niftyクリップに登録 はてなブックマークに登録 deliciousに登録 Buzzurlに登録 FC2ブックマークに登録
最近更新された掲示板トピックス
管理人Blog
Yahoo Search

最近更新したNote
PHPマニュアル
今日のブックマーク
PHPマニュアル関数検索
関数名を入力し検索ボタンをクリック↑