2

データベースからダウンロードするファイルを指定するにはどうすればよいですか?

main.php:

    include('databaseConnection.php');

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

    while($row = mysql_fetch_array($result)){


$download_me= $row['cv'];

echo $row['name'] . " " . $row['area_of_exp'] . " " ;

echo "<a href='download.php?file=$download_me'> cv </a>";

echo "<br />";
  }

download.php (ここに問題があります):

$file = $_GET['row["cv"]'];  
header('Content-Disposition: attachment; filename="'.$file.'"');
echo $file;

main.php のリンクがクリックされたときに CV がダウンロードされるようにしたい

4

2 に答える 2

1

ファイルが実際にデータベース内にある場合は、次の方法で取得できます。

Main.php:

<?php
  $host = "hostname";
  $user = "username";
  $password = "password";
  $database = "database";

  $link = mysqli_connect($host, $user, $password, $database);
  If (!$link){
      echo ("Unable to connect to database!");
  }
  else {
  $query = "SELECT * FROM participants";    
  $result = mysqli_query($link,$query);

  while ($row = mysqli_fetch_array($result, MYSQLI_BOTH)){

echo $row['name'] . " " . $row['area_of_exp'] . " " . '<a href="download.php?file='.$row['id_participants']. '"\>'." cv </a><br />";
  }


}
mysqli_close($link);
?>

mysql & より具体的なバージョン:

<?PHP
      include('databaseConnection.php');


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

      while ($row = mysql_fetch_array($result, MYSQL_BOTH)){

    echo $row['name'] . " " . $row['area_of_exp'] . " " . '<a href="download.php?file='.$row['id_participants']. '"\>'." cv </a><br />";
      }

      mysql_close($link);
    ?>

ダウンロード.php:

<?php


$id_participants = $_GET['file'];

$host = "hostname";
$user = "username";
$password = "password";
$database = "database";

$link = mysqli_connect($host, $user, $password, $database);
If (!$link){
      echo ("Unable to connect to database!");
  }
  else {
$query = "SELECT * FROM participants WHERE id_participants = $id_participants";

$result = mysqli_query($link, $query);
$row = mysqli_fetch_array($result, MYSQLI_BOTH);
$size = $row['File_Size'];
$type = $row['File_Type'];
$name =$row['File_Name'];
$CV = $row['cv'];
// echo $size . "". $type . " ". $name;

header("Content-length: $size");
header("Content-type: $type");
header("Content-Disposition: attachment; filename=$name");
echo $CV;

}
mysqli_close($link);

?>

Mysql & より具体的に:

<?php

include('databaseConnection.php');

$id_participants = $_GET['file'];


$query = "SELECT * FROM participants WHERE id_participants = $id_participants";

$result = mysql_query($query);
$row = mysql_fetch_array($result, MYSQL_BOTH);
$size = $row['File_Size'];
$type = $row['File_Type'];
$name =$row['File_Name'];
$CV = $row['cv'];
// echo $size . "". $type . " ". $name;

header("Content-length: $size");
header("Content-type: $type");
header("Content-Disposition: attachment; filename=$name");
echo $CV;

}
mysql_close();

?>

データベースのレイアウト:

CREATE TABLE IF NOT EXISTS `participants` (
  `id_participants` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(30) NOT NULL,
  `area_of_exp` varchar(30) NOT NULL,
  `cv` blob NOT NULL,
  `File_Size` varchar(30) NOT NULL,
  `File_Type` varchar(30) NOT NULL,
  `File_Name` varchar(30) NOT NULL,
  PRIMARY KEY (`id_participants`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=2 ;

http://www.sqlfiddle.com/#!2/91cb3/4

履歴書をデータベースに保存しないことをお勧めします。

于 2013-01-19T22:50:57.660 に答える
0

$row['cv']変数にファイル名があると思いますか?

ファイルに関しては、変数をエコーし​​ないでください (そうすれば、ファイル名のみが表示されます)。

ファイルを出力するには、readfile()を使用する必要があります。また、download.php ファイルで、存在しない GET 変数を取得しようとしています。

例えば:

$file = $_GET['file'];
header('Content-Disposition: attachment; filename="'. basename($file) . '"');
readfile($file);

$file 変数には、ファイルへのフル パス (絶対または相対) を含める必要があることに注意してください。そのため、basename()関数を使用してファイル名のみを取得しました。

于 2013-01-19T20:59:52.217 に答える