0

私はphpcontent-dispositionに小さな問題があり、問題がどこにあるのかはある程度理解していますが、それを解決する方法がわかりません(データベースを使用するのは初めてです)。このphpページを呼び出すと、エコーは表示されず、「cv」のみを対象としたダウンロードボックスのみが表示されます(受け取ったダウンロード可能なファイルを開くことができないため、そのように機能するかどうかはわかりません)。

行を削除するheader(content...とエコーが表示されますが、指定したファイルをダウンロードできません。クリックすると内容がダウンロードされるリンクとして表示したい。

$newEmployeeName = $_POST['name'];
$newEmployeeArea = $_POST['area'];
$newEmployeeCV   = $_POST['cv'];

include('databaseConnection.php');

$result = mysql_query("SELECT * FROM participants");

while($row = mysql_fetch_array($result))
{
  $download_me = $row['cv'];
   header("Content-Disposition: attachment; filename=$download_me");

  echo $row['name'] . " " . $row['area_of_exp'] . " " . $download_me;
  echo "<br />";
}        
4

1 に答える 1

2

ヘッダーは、スクリプトがその後Content-Dispositionにエコーされたものをすべてダウンロードとして表示するように強制します。通常、これはファイル システムからファイルを読み取るときに使用するため、ダウンロードとして提供できます。あなたの場合、CV をサーバーに保存している場合は、次のようにダウンロードとして提供できます。

<?php

$sql = "SELECT * FROM table WHERE id = :id LIMIT 1";
$stmt = $db->prepare($sql);
$stmt->bindParam(':id', $id, PDO::PARAM_INT);
$stmt->execute();

$row = $stmt->fetchObject();

if ($row) {
    header('Content-Disposition: attachment; filename=' . $row['filename']);
    readfile($uploads_dir . $row['filename']);
    exit;
}
else {
    die('Invalid CV requested.');
}

明らかに、上記はプロセスの単純化されたバージョンであり、アプリケーションに合わせて微調整する必要がありますが、それがその要点です。

また、関数を使用しないでくださいmysql_。それらは非推奨です (このページの警告に従って)。PDOまたは新しいMySQLi (MySQL が改良された) 拡張機能のいずれかを使用します。

于 2013-01-19T15:39:01.937 に答える