PHP загружает HTML-файл и отображает ссылку на индекс

#php #html #file-upload

Вопрос:

В настоящее время я разрабатываю веб-сайт, на котором пользователи могут загружать и делиться веб-сайтами. Я пытался создать функцию загрузки, но потерпел неудачу во всех попытках. Мне просто нужна система загрузки файлов, предпочтительно созданная с помощью PHP, которая загрузит HTML-страницу посетителей и автоматически разместит ссылку на эту страницу где-нибудь в index.html страница.

Вот код для index.html:

 <!DOCTYPE html>
<html>
<body>
<style>
* {
font-family: sans-serif; 
}
</style>
<h1>File Upload</h1>
<form action="upload.php" enctype="multipart/form-data" method="POST">
<input type="file" name="html"> <br/> <br/>
<input type="submit" value="Upload">
</form>
</body>
<br/> <br/>
<body>
<a href="https://example.com/">Example Link</a> <!-- Link of Uploaded file -->
</body>
</html> 

Вот код для upload.php:

 <?php
// Check if the form was submitted
if($_SERVER["REQUEST_METHOD"] == "POST"){
    if(isset($_FILES["html"]) amp;amp; $_FILES["html"]["error"] == 0){
        $allowed = array("html", "htm");
        $filename = $_FILES["html"]["name"];
        $filetype = $_FILES["html"]["type"];
        $filesize = $_FILES["html"]["size"];
    
        $ext = pathinfo($filename, PATHINFO_EXTENSION);
        if(!array_key_exists($ext, $allowed)) die("Sorry, the file you selected is not supported");
    
        $mazsize = 40MB;
        if($filesize > $maxsize) die("Error: File size is larger than the allowed limit.");
    
        if(in_array($filetype, $allowed)){
            if(file_exists("upload/" . $filename)){
                echo $filename . " is already exists.";
            } else{
                move_uploaded_file($_FILES["html"]["tmp_name"], "upload/" . $filename);
                echo "Success!";
            } 
        } else{
            echo "An error occured while uploading your file."; 
        }
    } else{
        echo "Error: " . $_FILES["html"]["error"];
    }
}
?>
 

Пожалуйста, помогите.

Комментарии:

1. Пожалуйста, покажите, что вы сделали в PHP (покажите свои PHP-коды).

2. Я только что добавил PHP.

3. В вашей форме отсутствует самая важная часть enctype="multipart/form-data" . Плюс а method="post"

4. другой важный момент: вам необходимо указать имя для поля ввода файла. Таким образом, <тип ввода=»файл»> должен быть <тип ввода=»файл»><тип ввода=»имя файла» =»html»>

Ответ №1:

Вы задаете, мягко говоря, немного странные вопросы. Ваш код также не соответствует вашим вопросам или запросу. Автоматически загружать HTML? И все же у вас есть форма для хранения HTML-кода веб-сайта пользователя?

Пользователь должен будет предоставить вам HTML-код своего веб-сайта, а также URL-адрес своего веб-сайта. Это означает, что вам нужно настроить свой сценарий для обработки обоих вариантов. Тем не менее, я вижу только один вариант-загрузить HTML. И в этом тоже нет ничего автоматического. Это просто простая функция загрузки текста. Если вы хотите настоящую автоматическую версию? Тогда вам следует мыслить нестандартно. Вы могли бы, например, позволить пользователям указывать свой URL-адрес, а затем создать своего рода бота, который будет делать скриншоты этого макета веб-сайта. Также с помощью простого JS вы можете добавить возможность записи URL-адреса веб-сайта пользователя. Затем под iframe будет указан URL-адрес пользователя без даты загрузки. Тогда вы могли бы использовать https://html2canvas.hertzen.com/ версия 1.0.0-rc.1 для создания приблизительного снимка макета URL-адреса пользователя.

Кто в противном случае в здравом уме загрузил бы весь свой HMTL? Для этого вам нужно гораздо больше работы, чем вы предоставили. Веб-сайт-это не только HMTL. Без JavaScript в наши дни не существует веб-сайта. Потому что почти каждый макет веб-сайта сломается без JavaScript. Затем есть изображения без полного URL-адреса, так как изображения обычно загружаются локально или даже через AWS или что-то в этом роде.

В любом случае, вам нужно вернуться к чертежной доске и выяснить, что именно вам нужно. Я бы предположил, что вам нужны люди, чтобы загрузить архив со всем сайтом, если это то, что вам нужно, весь сайт?

Но если вы зададите неправильные вопросы, то получите неправильные ответы. Ни за что на свете этот предоставленный вами код не будет достаточным для чего-либо полезного, кроме некоторых целей тестирования.

Ответ №2:

Я обновил код, и теперь вы можете попробовать, вы правильно использовали размер файла, и это вызывает ошибки

 <?php
// Check if the form was submitted
if($_SERVER["REQUEST_METHOD"] == "POST"){
    if(isset($_FILES["html"]) amp;amp; $_FILES["html"]["error"] == 0){
        $allowed = array("html", "htm");
        $filename = $_FILES["html"]["name"];
        $filetype = $_FILES["html"]["type"];
        $filesize = $_FILES["html"]["size"];
        $ext = strtolower(pathinfo($filename, PATHINFO_EXTENSION));
        if(!in_array($ext, $allowed)) die("Sorry, the file you selected is not supported");
        if($filesize > 4000000) die("Error: File size is larger than the allowed limit.");
        if(file_exists("upload/" . $filename)){
            echo $filename . " is already exists.";
        } else{
            if(move_uploaded_file($_FILES["html"]["tmp_name"], "upload/" . $filename)){
                echo "Success!";
            } else{
                echo "An error occured while uploading your file."; 
            }
        }
    } else{
        echo "Error: " . $_FILES["html"]["error"];
    }
}
?>
<!DOCTYPE html>
<html>
<body>
<style>
* {
font-family: sans-serif; 
}
</style>
<h1>File Upload</h1>
<form action="upload.php" enctype="multipart/form-data" method="POST">
<input type="file" name="html"> <br/> <br/>
<input type="submit" value="Upload">
</form>
</body>
<br/> <br/>
<body>
<a href="https://example.com/">Example Link</a> <!-- Link of Uploaded file -->
</body>
</html>