Как я могу заполнить HTML-таблицу из локального текстового файла?

0

У меня есть этот PHP-код для чтения текстового файла и генерации html-таблицы, но я не хочу включать имя файла в код, это имя файла должно поступать из текстового файла, который еще не загружен, можете ли вы дать решение этому?

<?php
    $filepath = 'files/the_file.txt';

    if (file_exists($filepath)) {
        $file = fopen($filepath, 'r');
        echo '<table border=1>';
        while (!feof($file)) {
            $line = fgets($file);
            $first_char = $line[0];
            if ($first_char != '*' && $first_char != '^' && trim($line) != '') {
                if (strstr($line, '|')) {
                    $split = explode('|', $line);
                    echo '<tr>';
                    foreach($split as $line) {
                        echo '<td>'.$line.'</td>';
                    }
                    echo '</tr>';
                } else {
                    echo '<tr><td>'.$line.'</td></tr>';
                }
            }
        }
        echo '</table>';
    } else {
        echo 'the file does not exist';
    }
?>

я не хочу указывать путь к файлу заранее, его следует читать после того, как файл будет загружен на страницу html, как показано ниже,

<html>
    <body>
        <form action="upload_file.php" method="post" enctype="multipart/form-data">
            <label for="file">Filename:</label>
            <input type="file" name="file" id="file"><br />
            <input type="submit" name="submit" value="Submit">
        </form>
    </body>
</html>

но опять же есть код для загрузки файла, upload_file.php,

<?php
    if ($_FILES["file"]["error"] > 0) {
        echo "Error: " . $_FILES["file"]["error"] . "<br>";
    } else {
        echo "Upload: " . $_FILES["file"]["name"] . "<br>";
        echo "Type: " . $_FILES["file"]["type"] . "<br>";
        echo "Size: " . ($_FILES["file"]["size"] / 1024) . " kB<br>";
        echo "Stored in: " . $_FILES["file"]["tmp_name"];
    }
?>
Теги:

2 ответа

0
Лучший ответ

Просто $filepath = $_FILES["file"]["tmp_name"]; форму в файл php с генерацией формы и замените statin $ filepath на $filepath = $_FILES["file"]["tmp_name"];

upload_file.php

<?php
if (isset($_FILES[file]) 
    && $_FILES["file"]["error"] == UPLOAD_ERR_OK
    && file_exists($_FILES["file"]["tmp_name"])) {

    $filepath = $_FILES["file"]["tmp_name"];

    $file = fopen($filepath, 'r');
    echo '<table border=1>';
    while (!feof($file)) {
        $line = fgets($file);
        $first_char = $line[0];
        if ($first_char != '*' && $first_char != '^' && trim($line) != '') {
            if (strstr($line, '|')) {
                $split = explode('|', $line);
                echo '<tr>';
                foreach($split as $line) {
                    echo '<td>'.$line.'</td>';
                }
                echo '</tr>';
            } else {
                echo '<tr><td>'.$line.'</td></tr>';
            }
        }
    }
    echo '</table>';
} else {
    echo 'the file does not exist';
}
  • 0
    Хорошо, теперь я хочу отобразить загруженный файл на той же странице, как это сделать?
  • 0
    Я изменил код выше. Просто опубликуйте свою форму в этом файле.
Показать ещё 1 комментарий
0

У вас есть весь код, который вам нужен прямо там. :) Вам просто нужно обернуть ваш основной код генерации таблицы в инструкции if, которая проверит, будет ли файл загружен в порядке:

if($_FILES["file"]["error"] == UPLOAD_ERR_OK) {
    if (file_exists($_FILES["file"]["tmp_name"])) {
        $file = fopen($_FILES["file"]["tmp_name"], 'r');

        // Rest of CODE to generate your table
}

Обратите внимание, что ваш загруженный файл в конечном итоге будет удален, если вы не переместите его с помощью move_uploaded_file().

  • 0
    Хорошо, теперь я хочу отобразить загруженный файл на той же странице, как это сделать?
  • 0
    Как так? Вы просто хотите ссылку на него? Будет ли файл постоянным для определенного пользователя или всех пользователей? Мне неясно, как вы хотите, чтобы это отображалось.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню