访问公用文件夹之外的文件

时间:2014-04-10 15:47:10

标签: php apache laravel laravel-4

我想存储只能由Laravel访问的文件(pdf,图像,视频)。这将迫使用户使用网站而不是网址。

我怎样才能做到这一点?这样做有最好的做法吗?

谢谢你!

这是我的代码:

public static function downloadFile($id){
        $file = FileManager::find($id);
        //$file->location = ../app/storage/file/dam04/2-2/manual.pdf
        //file->type = pdf
        //file->name = instructor manual
        $headers = array(
              'Content-Type:'.mime_content_type($file->location),
            );
        return Response::download($file->location, $file->name.'.'.$file->type, $headers);

        //exit;
     }

我无法解决这个问题。这些文件位于app / storage /.

我真的可以使用一些建议,为什么这不起作用。谢谢,

1 个答案:

答案 0 :(得分:2)

您可以使用Response::download()

创建路由器:

Route::get('/files/{fileName}', 'FileServerController@download');

在你的控制器中你做

class FileServerController extends Controller {

    public function download($fileName)
    {
        if (file_exists("$basepath/$fileName"))
        {
            return Response::download("$basepath/$fileName");
        }

        return Redirect::route('home')->withMessage('file not found');

        // or return Response::make('File not found', 404);
    }

}

您可以验证过滤路线:

Route::get('/files/{fileName}', ['before' => 'auth', 'uses' => 'FileServerController@download']);

您可以在用户登录后立即使用expected()开始下载文件:

if (Auth::attempt(...))
{
   return Redirect::intended('home');
}