【问题标题】:PHP upload HTML file and display link on indexPHP上传HTML文件并在索引上显示链接
【发布时间】:2021-07-12 10:39:51
【问题描述】:

我目前正在开发一个网站,用户可以在那里上传和分享网站。 我试图创建一个上传功能,但每次尝试都失败了。 我只想要一个文件上传系统,最好用 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"]) && $_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"];
    }
}
?>

请帮忙。

【问题讨论】:

  • 请展示您在 PHP 中所做的事情(展示您的 PHP 代码)
  • 我刚刚添加了 PHP。
  • 您的表单中缺少最重要的部分enctype="multipart/form-data"。加上method="post"
  • 另一个重要的一点:您需要为您的文件输入框提供一个名称。所以 应该是

标签: php html file-upload


【解决方案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"]) && $_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>

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-03-28
      • 2016-06-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多