单个下载文件上传机制


Single download file upload mechanism

很抱歉,这个标题比较模糊,我想不出其他的了

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

想到的第一件事就是简单地进行常规上传,然后执行readfile(),然后执行unlink()。sendfile显然是不可能的,因为那时我没有在文件传输后执行代码的方法。但是readfile()似乎不是一个好主意。

我不介意安装一个单独的守护进程或类似的东西。

伪代码:
  1. $_FILES['tmp_name']
  2. 获取文件的临时路径
  3. 将其移动到不可猜测的服务器位置(如uploads/file{random_numbers}.extension
  4. )
  5. 将信息存储在DB

访问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否则我们不再做任何事情

  2. 在页面上包含一个非规则头文件,以便它被下载

  3. x分钟运行一次cron-job以清除不再需要的文件- cron将无法删除当前正在传输给用户的文件(据我所知,因为它仍然"在使用中")。

希望你能遵循我的逻辑并按计划执行。

如果您不介意安装一个单独的守护进程,您可以安装cron。您可以将它设置为每n分钟删除一次过时的文件。