0

我对 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 />";
}        
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 回答