1 pièce(s) jointe(s)
Télécharger un fichier BLOB stocker en base
Bonjour,
Je stock des fichiers en base de cette façon :
Code:
1 2 3 4 5 6 7 8 9 10
| if(isset($_POST['stock_Name_2']) == null) {
$req = $bdd->prepare('INSERT INTO employe (date_1, date_2, name_file, type_file, data_file) VALUES ( ?,?,?, ?, ?)');
$bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$req->bindParam(1, $date_1, PDO::PARAM_STR);
$req->bindParam(2, $date_2, PDO::PARAM_STR);
$req->bindParam(3, $file['name'], PDO::PARAM_STR);
$req->bindParam(4, $file['type'], PDO::PARAM_STR);
$req->bindParam(5, file_get_contents($file['tmp_name']), PDO::PARAM_LOB);
$req->execute();
} |
Dans un autre fichier PHP j'affiche les 10 premiers fichiers que contient la base de donnée, et j'associe un bouton "Télécharger" avec :
Pièce jointe 207425
Maintenant je sais pas trop comment mis prendre pour télécharger ce fichier...
J'ai créer une function downloadFile, mais je ne sais pas si elle est efficace ou pas.
Voici mon code pour les boutons :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| <?php
require ('download_file.php');
try
{
$bdd = new PDO('mysql:host=localhost;dbname=projet_licence;charset=utf8', 'root', '');
}
catch(Exception $e)
{
die('Erreur : '.$e->getMessage());
}
$answer = $bdd->query('SELECT date_1, date_2, name_file, data_file, tmp_name FROM employe LIMIT 0, 10');
echo '<p> Voici les fihciers avec les périodes associés que contient la base de données : </p>';
while ($donnees = $answer->fetch())
echo '</br>' . $donnees['date_1'] . ' au ' . $donnees['date_2'] . ' Fichier = ' . $donnees['name_file'] . ' ' . '<form method="post" action="<?php downloadfile($donnees[\'name_file\'], $donnees[\'tmp_name\'], $donnees[\'size\']) ?>"><input type=\'submit\' value=\'Télécharger\' id=\'dowloadFile\'/></form>';
?> |
Le code pour la fonction dowloadFile (celui que j'insère en action pour les boutons) :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| <? PHP
function downloadfile($name, $tmp_name, $size)
{
header('Content-Type: application/octet-stream');
header('Content-Length: '. $size);
header('Content-disposition: attachment; filename='. $name);
header('Pragma: no-cache');
header('Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0');
header('Expires: 0');
readfile($tmp_name);
exit();
}
?> |
Merci d'avance !