【问题标题】:PHP/HTML - Display Uploaded Files in ListPHP/HTML - 在列表中显示上传的文件
【发布时间】:2015-07-08 12:38:26
【问题描述】:

我正在尝试创建一个文件共享站点,我可以在其中显示所有上传图像的链接。一旦用户上传了一个文件,他们将能够看到已经上传的文件并上传另一个文件。但是,我目前有两个问题: 1. 用户上传图片后,不知道如何重新显示主上传页面。 2.我不知道如何根据存在的文件动态创建链接。

这是我目前的代码:

HTML/PHP 文件共享站点

<body>
<h2>File-Sharing Site</h2>
<h3>Upload file</h3>
<form action="upload_file.php" method="post" enctype="multipart/form-data">
Search for file: <br />
<input type="file" name="file" id="file" />
<input type="submit" name="submit" value="Upload" />
</form>
</body>
</html>

PHP

<?php
    $allowedExts = array("jpg", "jpeg", "gif", "png");
    $extension = end(explode(".", $_FILES["file"]["name"]));
    if((($_FILES["file"]["type"] == "image/gif")
    || ($_FILES["file"]["type"] == "image/jpeg")
    || ($_FILES["file"]["type"] == "image/pjpeg"))
    && ($_FILES["file"]["size"] < 800000)
    && in_array($extension, $allowedExts))
    {
    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"];

        if (file_exists("upload/" . $_FILES["file"]["name"]))
        {
            echo $_FILES["file"]["name"] . " already exists. ";
        }
        else
        {
            move_uploaded_file($_FILES["file"]["tmp_name"],
            "upload/" . $_FILES["file"]["name"]);
            echo "Stored in: " . "upload/" . $_FILES["file"]["name"];
        }
    }
}
else
{
    echo "Invalid file";
}

?>

【问题讨论】:

  • 您的脚本打开了您的服务器,导致完全妥协。你有可悲地容易绕过“安全性”。我建议您终止此代码并在此站点上查找许多“安全上传”脚本问题和答案。
  • 此代码不用于商业目的。它不会是一个公共文件,其他事情也会有安全保障。现在,我需要弄清楚如何根据文件上传脚本中发生的情况在主文件中创建一个动态列表。

标签: php html file-upload image-uploading file-sharing


【解决方案1】:

您可以将其添加到您的主页以显示上传的文件:

<?php
if ($handle = opendir('upload/')) {
    while (false !== ($entry = readdir($handle))) {
        if ($entry != "." && $entry != "..") {
            echo "$entry<br>";
        }
    }
    closedir($handle);
}   
?>

当然,您必须重定向回主页以查看文件列表并可能上传更多文件。或者使用ajax上传文件,这样就不会被强制重定向回来。

我已经使用现成的插件来实现这一切: http://blueimp.github.com/jQuery-File-Upload/

【讨论】:

    【解决方案2】:

    1) 使用Header functionheader('Location: ... '); 将用户重定向到主上传页面
    2) 需要使用*sql方案来存储文件链接并显示出来。
    2a) 为所有上传的文件赋予唯一的文件名(即 md5($file['name'])

    【讨论】:

      【解决方案3】:

      您可以使用Ajax file upload。 使用 ajax 上传文件,然后将文件路径作为响应返回...然后将该响应打印为页面上的链接(在某些 div、字段中...)

       $.ajaxFileUpload
          (
              {
                  url:'upload_file.php',
                  secureuri:false,
                  fileElementId:'file',
                  dataType: 'json',
                  success: function (response)
                  {
                      $("#div_where_you_print_response").html(response)
                  },
                  error: function (data, status, e)
                  {
                      alert(e);
                  }
              }
          );
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-03-28
        • 1970-01-01
        • 2014-11-09
        • 2011-02-07
        • 2016-04-30
        • 2014-08-19
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多