У меня есть этот 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"];
}
?>
Просто $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';
}
У вас есть весь код, который вам нужен прямо там. :) Вам просто нужно обернуть ваш основной код генерации таблицы в инструкции 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().