Скачать файл Excel из PHP - PullRequest
       33

Скачать файл Excel из PHP

1 голос
/ 12 июня 2019

Я работаю в проекте, где храню файлы в базе данных Mysql.

Я сохранил файлы в виде длинного большого двоичного объекта в своей базе данных, и я хочу, чтобы они были доступны для чтения в моем веб-сайте на основе PHP. Я пытался просмотреть файлы PDF, и это работает, но если я пытаюсь загрузить файл Excel, он дает мне файл file.php и некоторые цифры.

//PHP

$dbh= new PDO("mysql:host=localhost;dbname=smi","root","");
$id=isset($_GET['id_fichier'])? $_GET['id_fichier']:"";
$stat=$dbh->prepare("select * from fichier where id_fichier=?");
$stat->bindparam(1,$id);
$stat->execute();
$row=$stat->fetch();
$file = $row['fichier'];
$type=$row['type'];
header('Content-Type:'.$type);
echo($file);

Я ожидаю файл Excel, но получаю что-то вроде этого.

3c21 444f 4354 5950 4520 6874 6d6c 3e0d
0a3c 6874 6d6c 2064 6972 3d22 6c74 7222
206c 616e 673d 2265 6e22 3e0d 0a3c 6865
6164 3e0d 0a3c 7469 746c 653e 534d 4920
4165 726f 706f 7274 2046 6573 2053 6169
7373 3c2f 7469 746c 653e 0d0a 0d0a 3c2f

1 Ответ

0 голосов
/ 12 июня 2019

Убедитесь, что вы правильно добавили его в свою базу данных и что тип столбца fichier установлен на BLOB, а не на что-либо другое.

Вот чистый код для его вставкив вашу базу данных:

$dbh = new PDO('mysql:host=localhost;dbname=smi', 'root', '');

$file = 'XYZ.xls';
$blob = fopen($file, 'rb');
$mime = 'application/vnd.ms-excel';

$sql  = "INSERT INTO `fichier` (fichier, type) VALUES (:fichier, :type)";
$stmt = $dbh->prepare($sql);
$stmt->bindParam(':fichier', $blob, PDO::PARAM_LOB);
$stmt->bindParam(':type', $mime);
$stmt->execute();

И затем выберите его обратно:

if(isset($_GET['id_fichier'])){
   $id   = $_GET['id_fichier'];  
   $stmt = $dbh->prepare("SELECT * from `fichier` where `id_fichier` = :id");
   $stmt->bindColumn(':id', $id);
   $stmt->execute();

   $data = $stat->fetch();
   $file = $data['fichier'];
   $type = $data['type'];
   header('Content-Type:'.$type);
   echo($file);
}
...