私は自分の仕事からいくつかのプロジェクトを保存するURLを持っています。それらはほとんどMDBファイルですが、いくつかのJPGとPDFもそこにあります。
私がする必要があるのは、そのディレクトリからすべてのファイルをリストし(すでに実行済み)、ユーザーにそれをダウンロードするオプションを与えることです。
PHPを使用してそれをどのように達成しますか?
私は自分の仕事からいくつかのプロジェクトを保存するURLを持っています。それらはほとんどMDBファイルですが、いくつかのJPGとPDFもそこにあります。
私がする必要があるのは、そのディレクトリからすべてのファイルをリストし(すでに実行済み)、ユーザーにそれをダウンロードするオプションを与えることです。
PHPを使用してそれをどのように達成しますか?
ディレクトリの内容を読み取るには、readdir()を使用し、スクリプトを使用して、私の例download.php
では、ファイルをダウンロードします
if ($handle = opendir('/path/to/your/dir/')) {
while (false !== ($entry = readdir($handle))) {
if ($entry != "." && $entry != "..") {
echo "<a href='download.php?file=".$entry."'>".$entry."</a>\n";
}
}
closedir($handle);
}
download.php
ブラウザにダウンロードデータを強制的に送信させ、 basename() を使用して、クライアントが他のファイル名を渡さないようにすることができます../config.php
$file = basename($_GET['file']);
$file = '/path/to/your/dir/'.$file;
if(!file_exists($file)){ // file does not exist
die('file not found');
} else {
header("Cache-Control: public");
header("Content-Description: File Transfer");
header("Content-Disposition: attachment; filename=$file");
header("Content-Type: application/zip");
header("Content-Transfer-Encoding: binary");
// read the file from disk
readfile($file);
}
フォルダーがブラウザーからアクセスできる場合 (Web サーバーのドキュメント ルートの外部ではありません)、それらのファイルの場所へのリンクを出力するだけで済みます。それらがドキュメント ルートの外にある場合は、その場所からのファイルの取得と応答へのストリーミングを処理する PHP スクリプトを指すリンク、ボタンなどが必要になります。