私は自分の作品からいくつかのプロジェクトを保存する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){ // 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);
}
私は403メッセージを受け取ります。フォルダのアクセス許可をチェックし、777に設定されているので、何が起こっているのか分からない。 –
パスが正しいことを確認してください...フォルダとファイルへのパス –
ファイルが存在するディレクトリで.htaccessファイルの内容を確認してください。 –
フォルダがブラウザからアクセスできる場合(Webサーバーのドキュメントルートの外側ではない場合)、それらのファイルの場所へのリンクを出力するだけで済みます。それらがドキュメントルートの外にある場合は、リンクやボタンなどが必要です。その場所からファイルを取得し、レスポンスにストリーミングするPHPスクリプトを指しています。
ファイルがイメージまたはテキストの場合、それはダウンロードされません。 –
ブラウザで開くファイルの場合は、ブラウザの保存機能を使用してファイルシステムに保存できます。ミッションはまだ達成されています。 –
あなたはそれを顧客に伝えることができるなら、ほとんどの「消費者」がブラウザーで開いたテキストファイル、またはpdfファイルを見るとどうするか分からないことを知りました。 –
のような他のファイル名を渡していないディレクトリ内のすべてのファイルを一覧表示し、それをダウンロードする簡単なソリューションです。あなたのindex.phpファイルで
<?php
$dir = "./";
$allFiles = scandir($dir);
$files = array_diff($allFiles, array('.', '..')); // To remove . and ..
foreach($files as $file){
echo "<a href='download.php?file=".$file."'>".$file."</a><br>";
}
SCANDIR()関数リスト指定されたパス内のすべてのファイルとディレクトリ。これは、ブラウザによって処理されないdownload.php
<?php
$filename = basename($_GET['file']);
// Specify file path.
$path = ''; // '/uplods/'
$download_file = $path.$filename;
if(!empty($filename)){
// Check file is exists on given path.
if(file_exists($download_file))
{
header('Content-Disposition: attachment; filename=' . $filename);
readfile($download_file);
exit;
}
else
{
echo 'File does not exists on given path';
}
}
で今PHP 5とPHPの両方で7
に動作しますか? – SomeKittens
しかし、どのようにブラウザにダウンロードを開始させるのですか? –
ファイルへのリンクを提供しますか? – Nick