Laravel - 使用身份验证限制某些下载

use*_*614 1 php file download authorize laravel

假设我想创建一个应用程序,用户可以将私有文件上传到基于laravel的网站.我不想让他们的文件公开,但我希望他们能够在登录后下载文件.

所以我需要验证他们已经登录,并且他们有正确的帐户ID来下载特定文件.我该如何创建此限制?

我一直在寻找http://laravel.com/docs没有成功,并且通过谷歌搜索我只能获得一些香草PHP样本,但是整合到laravel看起来很麻烦,你建议我做哪种方式这个?

我可能会在我头脑中过度复杂化,也许我可以在数据库中创建一个具有帐户ID和文件路径的表,并使用Response :: download($ pathToFile); 用.htaccess限制上传的文件夹不允许?

(假设laravels Response :: download方法绕过.htaccess)但即使这项工作,最好找到一种方法来做到这一点,而没有.htaccess认为?

编辑 我想我只是将文件作为blob存储在数据库中,然后从那里加载它.这样我就可以轻松地进行授权验证.

小智 5

您所要做的就是将文件存储在私人目录(例如/ app/files)中并设置正确的标题.

    $name = 'name.zip';
    $file = '/app/files/name.zip';

    $header = array(
        'Content-Type' => 'application/octet-stream',
        'Content-Disposition' => 'attachment', 
        'Content-lenght' => filesize($file),
        'filename' => $name,
    );

    // auth code
    return Response::download($file, $name, $header);
Run Code Online (Sandbox Code Playgroud)