单一下载文件上传机制

时间:2011-07-24 13:16:01

标签: php

对于相对模糊的标题感到抱歉,我想不出别的什么。

因此,简而言之,我要求的是创建简单文件上传服务的最佳(资源最少)方法,该服务将在首次下载后删除该文件。可以是PHP或其他任何东西(只要它相对容易实现)。它基本上适用于单个用户的流式屏幕截图。

首先想到的是简单地进行常规上传,然后执行readfile(),然后执行unlink()。 sendfile显然是不可能的,因为我没有办法在文件传输后执行代码。但readfile()看起来并不是一个好主意。

我不介意在这些行上安装一个单独的守护进程。

2 个答案:

答案 0 :(得分:2)

的伪代码:

  1. $_FILES['tmp_name']
  2. 获取该文件的临时路径
  3. 将其移至不可猜测的服务器位置(如uploads/file{random_numbers}.extension
  4. 将信息存储在数据库中
  5. 访问yoursite.tld/view.php?id={unique id that's <> file{random_numbers}时:

    1. SELECT path FROM TABLE WHERE token = 'UNIQUE ID ABOVE' AND downloaded = 0

      1.1如果DB中有一行,我们得到路径,然后在DB中设置downloaded = 1 1.2 ELSE我们不做任何进一步的工作

    2. 使用非常规标题包含页面上的文件以便下载

    3. 每隔x分钟运行一次cron-job以清除不再需要的文件 - cron将无法删除当前正传输给用户的文件(据我所知,因为它仍然是“在使用中”)。
    4. 希望您能够按照我的逻辑并按计划实施它。

答案 1 :(得分:0)

如果您不介意安装单独的守护程序,可以安装cron。您可以对其进行设置,以便每隔n分钟删除过时的文件。