从数据库下载

时间:2013-01-19 14:12:07

标签: php download database

我对php内容处理有一个小问题,我有点理解问题所在,但我不知道如何解决它(使用数据库的新手)。调用这个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 />";
}        

1 个答案:

答案 0 :(得分: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_功能。它们已被弃用(根据this page上的警告)。使用PDO或新的MySQLi(MySQL改进的)扩展名。