ファイルダウンロードをさせたい - PHPプロ!Q&A掲示板

1080

  • 0P

ファイルダウンロードをさせたい

質問日時 / 2008年4月3日 17:33    回答数 / 2件

Questioner:  ma_zu  このエントリーをはてなブックマークに追加 

キーワード / ダウンロード   

phpとは別ディレクトリに存在するファイルを
ブラウザのリンクを右クリックして「対象を保存」の方式ではなく
即ダウンロードのダイアログが出るような仕組みを作りたいのですが
どうすればよいのかわかりません

headerを使って試しに作ってみたのですが、スクリプトそのものをダウンロードするようになってしまいます
どのようにすればよいのでしょうか

HTML抜粋
  1. <form  action="file.php" method="post">
  2. <input type="checkbox" name="chk[1]" value="file_name1">
  3. file_name1<br>
  4. <input type="checkbox" name="chk[2]" value="file_name2">
  5. file_name2<br>
  6. <input type="submit" value="ダウンロード">
  7. </form>

PHP抜粋
  1. function down(){
  2. global $chk;
  3. $for($i=0;$i<count($chk);$i++){
  4. echo $chk[$i];
  5. }
  6. }

これでファイル名はPOSTできている状態です(チェックを入れたファイル名がリスト表示されました)
リストはテスト用に出しただけで実際には必要ありません
実際の流れはディレクトリパスとファイル名を設定して、ループ処理でダウンロードのダイアログを表示させる
という風にしたいのですが可能でしょうか
また、ダイアログは1回だけ表示し2つ目のファイル以降は同じディレクトリに自動保存するような仕組みは作れるものでしょうか

PHPバージョン 4.2.x(今、詳細が見れないので・・)

この質問への意見の募集は締め切られ、ポイントは既に配分されました。
意見を投稿することはできますが、ポイントを受け取ることはできません。



ツリー一覧

┗A01moochomoochoと申します。 >headerを使って試しに作って
 ┗A01-1ma_zumoochoさん、ありがとうございます やっぱり無理です

回答一覧

並び替え:

A01 満足
answerermoocho [4月3日 21:26] (最終編集:4月3日 21:33)

moochoと申します。

>headerを使って試しに作ってみたのですが、スクリプトそのものをダウンロードするようになってしまいます
>どのようにすればよいのでしょうか
実際どういうスクリプトを書いて、こうなったがわからないですが。

  1. header('Content-Type: application/octet-stream'};
  2. header('Content-Disposition: attachment; filename="file.txt"');
  3. header('Content-Length: ' . filesize('sample.php'));
  4. readfile('sample.php');
見たいな感じになってたりとか?

スクリプトで出力した文字列やら、バイナリをダウンロードできるようになるので
スクリプトの書き方が間違っているんじゃないでしょうか?

中身を見てみないと、具体的な回答はできませんが。

>実際の流れはディレクトリパスとファイル名を設定して、ループ処理でダウンロードのダイアログを表示させる
>という風にしたいのですが可能でしょうか
headerでファイルダウンロードはできますが、
1つのスクリプト内でいくつもheaderをかけるわけじゃないので
ちょっと、無理じゃないですかね。

(javascriptとかでインラインフレームにダウンロード用の
スクリプトページを連続で出し続けるとか、
ちょっと無茶をすれば、それっぽいことが実現するかもしれないですが)

>また、ダイアログは1回だけ表示し2つ目のファイル以降は同じディレクトリに自動保存するような仕組みは作れるものでしょうか
これも無理ですね。

これはPHPとか云々ではなくブラウザの問題になりますし。

どっちにしても、こういうことができたらウイルスでも何でも仕込み放題で
セキュリティ的に問題でしょうし。

なんとなく、フォームでファイルを選択させてダウンロードさせる
必要性が思いつかないのですが、せっかく選択させるなら
zipとか1つのファイルに固めてあげてからダウンロードできた方が親切かなと。
(1回のダウンロードで済みますし)

この意見に回答する

ツリーへ TOPへ

A01-1
replyerma_zu [4月4日 11:08]

moochoさん、ありがとうございます
やっぱり無理ですか
圧縮で1ファイルにまとめる方向で検討してみます

ご意見ありがとうございました

この意見に回答する

ツリーへ TOPへ

<<質問一覧へ



Pick Up Q&A

Q
動的なURLを静的に見せる方法
 このエントリーをはてなブックマークに追加 
A
普通に考えて、mod_rewrite でしょうね。 http://www.nishishi.com/blog/2006/01/mod_rewrite_url.html...

>>続きを読む

GETのままでは検索エンジンのロボットが拾ってくれなかったためにSEO対策として有効だと言われていますね。

▲解説者:岡本(アシアル株式会社 教育コーディネーター兼 システムエンジニア)