将用户文件加载到PHP模板页面

时间:2014-03-26 21:11:58

标签: php html5

所以我有点卡在这里。作为一个个人项目,我试图让一个网站有点像Newgorunds.com(在功能上)并且我已经走到了死胡同。

我决定在根目录中为每个用户上传的文件类型设置一个文件夹,例如名为music的文件夹。文件夹内将是所有用户名,子目录内将是他们上传的文件。我假设我需要使用scandir来查找文件。

我的问题是,我如何制作最新上传的列表,然后,当用户点击其中一个上传时,如何让它打开模板页面,将文件加载到播放器中(为了论证,打算使用HTML5播放器)?

我想要一些像这样的东西:http://www.newgrounds.com/audio/browse/sort/date 它在一个带有用户名字的模板化页面中打开文件(在本例中为音乐)。

1 个答案:

答案 0 :(得分:2)

使用数据库存储文件数据。

用户查询或排序或任何事情都会变得更容易。

例如,使用您的文件实现,您将如何找到所有文件

  • 从昨天开始
  • 这是一个MP3
  • 已由具有未经验证的电子邮件地址的用户上传

更好的方法

上传文件时,在表格中创建一行,该行应包含(至少)文件名,拥有该文件的用户的用户ID和文件类型。

然后您可以使用它来获取用户的文件,这是获取用户4的mp3文件的示例查询;

SELECT * FROM files WHERE user_id = 4 AND type = 'mp3';

您应该将文件的路径存储在其他位置,而不是存储在数据库中。这是因为如果您移动文件,例如移动到Amazon S3或CDN,则数据库不会中断。

例如;

if($file['type'] == "mp3")
    $pathPrefix = "/files/music/";
else if($file['type'] == "document")
    $pathPrefix = "/files/docs/";

$fullPath = $pathPrefix . $file['filename'];

echo "Path is " . $fullPath;

如果您更改了文件的目的地,您只需更改此代码,而不是更改数据库中的所有内容。

if($file['type'] == "mp3")
    $pathPrefix = "http://s3.amazon.com/abc/music/";
else if($file['type'] == "document")
    $pathPrefix = "http://s3.amazon.com/abc/docs/";