编写一个小应用程序(以及其他内容)可让用户上传文件(,如图像,.doc或文本文件)作为其发布的一部分/提交。
我们当前的原型只是将文件转储到 / {app_root} / files / ,但当然,即使他们没有登录或使用系统,任何人都可以使用它。目标是仅在用户登录时授予对文件的访问权限(视图访问),并且实际上可以访问该文件所属的帖子。
因此,简而言之,我正在寻找一种很好的方法来做到这一点。
我正在考虑在 / web / ( http )文件夹之外创建一个文件夹,然后使用PHP以某种方式使用 header() commans,或者,可能只是将文件转储到数据库中?但是,我从来没有做过任何一个。
虽然我怀疑我最终可以解决这个问题,但是在这里有太多聪明人,我想知道有人会知道某种现有的类或函数库已经这样做了吗?
答案 0 :(得分:9)
您必须执行以下操作:
$id.$ext
,依此类推。简而言之,您不希望在系统中使用用户的文件名。download.php
或其他任何内容,获取文件的ID,验证谁已登录,如果所有内容都已检出,请获取文件,将其读取到浏览器,然后发送相应的下载标头。 这些标题类似于:
header('Content-type: application/octet-stream');
header('Content-disposition: attachment; filename=usersuppliedname.txt');
header("Content-Length: " . filesize('../safefiles/1.txt'));
header("Content-Transfer-Encoding: binary");
readfile('../safefiles/1.txt');
exit;
如果你想允许恢复文件等,你可以get more fancy,但上面应该这样做。