PHP MySqli Не удается загрузить файл из базы данных.Не удалось загрузить документ PDF - PullRequest
0 голосов
/ 21 декабря 2018

Я пытаюсь загрузить файл из моей базы данных, который я загрузил, используя путь, и скопировать файл в папку.Когда я загружаю файл и пытаюсь открыть его, он говорит: «Не удалось загрузить PDF документ».Я не знаю, что я делаю не так.Может кто-то помочь мне, пожалуйста?Спасибо, ребята.

Это мой код загрузки файла:

$contract_file = basename($_FILES['contractupload']['name']);
$contract_path = "files/contracts/$contract_file";
$contract_file = mysqli_real_escape_string($conn, $contract_file);

if (copy($_FILES['contractupload']['tmp_name'], $contract_path)){

$sql = "INSERT INTO addemployees (contractupload)

        VALUES ('$contract_file')";

Это мой код загрузки:

<?php

// Include config file
require_once "config.php";

if(isset($_GET['id'])) { // if id is set then get the file with the id from database

    $id = $_GET['id'];

    $query = "SELECT contractupload FROM addemployees WHERE id = $id";

    $result = mysqli_query($mysqli, $query) or die('Error, query failed');

    list($contractupload) = mysqli_fetch_array($result);

    header("Content-Type: application/octet-stream");
    header("Content-Disposition: attachment; filename=" . Urlencode($contractupload));
    header("Content-Type: application/force-download");
    header("Content-Type: application/octet-stream");
    header("Content-Type: application/download");
    header("Content-Description: File Transfer");

    echo $contractupload; exit;
}
?>

Download File From MySQL

<?php

$query = "SELECT id, contractupload FROM addemployees";

$result = mysqli_query($query) or die('Error, query failed');

if(mysqli_num_rows($result) == 0)
{
    echo "Database is empty";
}
else
{
    while(list($id, $contractupload) = mysqli_fetch_array($result))
    {
?>

<?php
    }
}
?>

Я перечисляю его / показываю своемустол:

<?php
$conn = mysqli_connect("localhost", "root", "", "employees");

if (!$conn) {
    die("Connection failed: " . mysqli_connect_error());
}

$sql = "SELECT * from addemployees";
$result = $conn-> query($sql);

if ($result-> num_rows > 0) {
    while ($row = $result-> fetch_assoc()) {

        echo "<tr>
                 <td>".$row['id']."</td>
                 <td>".$row['fname']."</td>
                 <td>".$row['lname']."</td>
                 <td>".$row['dob']."</td>
                 <td>".$row['embg']."</td>
                 <td>".$row['workposition']."</td>
                 <td>".$row['address']."</td>
                 <td><a href='download2.php?id=". $row['id'] ."' title='Download File'><span style='font-size: 19px; color: #3277b6; margin-right: 15px;'><i class='far fa-eye'></i></span></a></td>

                 <td>
                     <a href='read.php?id=". $row['id'] ."' title='View'><span style='font-size: 19px; color: #3277b6; margin-right: 15px;'><i class='far fa-eye'></i></span></a>
                     <a href='update.php?id=". $row['id'] ."' title='Edit'><span style='font-size: 19px; color: #5cb85c; margin-right: 15px;'><i class='fas fa-pencil-alt'></i></span></a>
                     <a href='delete.php?id=". $row['id'] ."' title='Delete'><span style='font-size: 19px; color: red;'><i class='fas fa-trash-alt'></i></span></a>
                     </td>
                 </tr>";
    }
    echo "</table>";
} else {
    echo "0 results";
}

$conn-> close();
?>

1 Ответ

0 голосов
/ 21 декабря 2018

$contactupload - это просто имя файла.Вам необходимо вернуть содержимое файла, а не имя файла.

Изменить

echo $contractupload;

на

readfile("files/contracts/$contractupload");

Кроме того, у вас не должно быть несколько Content-type: заголовков,Если предполагается, что это PDF, это должно быть:

header("Content-type: application/pdf");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...