<< 画像表示について質問です。 質問一覧 文字化け >>

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

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(今、詳細が見れないので・・)

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

Qファイルダウンロードをさせたい ma_zu  [04月03日 17時33分] 
┗満開Re:ファイルダウンロードをさせたい moocho  [04月03日 21時26分] 
  ┗Re:Re:ファイルダウンロードをさせたい ma_zu  [04月04日 11時08分] 

コメント一覧

並び替え( ツリー順 / 投稿順[降順] / 投稿順[昇順]

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

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回のダウンロードで済みますし)

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

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

ご意見ありがとうございました
画像表示について質問です。 質問一覧 文字化け