загрузка файла с использованием MySQL и PHP - PullRequest
0 голосов
/ 16 марта 2012

Я создаю страницу PHP, которая позволяет пользователям загружать файлы, когда они нажимают на эту кнопку:

<td><a href='download.php?id={$row['file_name']}'>Download</a></td>

, затем страница перенаправляется на download.php, код:

<code><?php
  // Make sure an ID was passed
    if(isset($_GET['file_name'])) {
        // Get the ID$id
        $file_name= ($_GET['file_name']);
        // Make sure the ID is in fact a valid ID
    if($file_name == NULL) {
        die('The name is invalid!');
    }
    else {
        // Connect to the database
        $dbLink = new mysqli('localhost', 'root', "", 'db_name');
        if(mysqli_connect_errno()) {
            die("MySQL connection failed: ".mysqli_connect_error());
        }
         // Fetch the file information
        $query = "
            SELECT `type`, `file_name`, `size`, `data`
            FROM `pdfs`
            WHERE `file_name` = {$file_name}";
        $result = $dbLink->query($query);

        if($result) {
            // Make sure the result is valid
            if($result->num_rows == 1) {
            // Get the row
                $row = mysqli_fetch_assoc($result);

                header("Content-Type: ".$row['type']);
                header("Content-Length: ".$row['size']);
                header("Content-Disposition: attachment"); 
                // disopsition = attachment to force download request
                // Print data
                echo $row['data'];
            }
            else {
                echo 'Error! No file exists with that ID.';
            }
            // Free the mysqli resources
            @mysqli_free_result($result);
        }
        else {
            // if there is an error excuting the query
            echo "Error! Query failed: <pre>{$dbLink->error}
";}// закрыть соединение с базой данных @mysqli_close ($ dbLink);}} else {// если ID не передан echo 'Ошибка! ID не был передан.';}?>

однако, когда я нажмупри загрузке я всегда получаю массаж с последним оператором else «ошибка, идентификатор не был передан», но я не могу найти проблему, это проблема, которую я сделал, первичный ключ файла - имя ??

Ответы [ 4 ]

2 голосов
/ 16 марта 2012
$_GET['file_name'] should be $_GET['id']

since <a href='download.php?id={$row['file_name']}'> you sending "id" not "file_name"
2 голосов
/ 16 марта 2012

Если ваша ссылка выглядит так:

<a href='download.php?id={$row['file_name']}'>

Тогда переменная GET будет иметь значение 'id', как в $_GET['id'], а не $_GET['file_name']

0 голосов
/ 31 января 2014
<a href='download.php?id={$row['file_name']}'> 

вы должны использовать <a href="download.php?id=<?= $row['file_name'];?>">

, затем использовать $_GET['id'], поскольку id - это переменная, которую вы передаете в URL, а не $_GET['file_name']

0 голосов
/ 16 марта 2012

Опечатка

<td><a href='download.php?id=<?php echo $row['file_name']; ?>'>Download</a></td>
...