我想存储只能由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 /.
中我真的可以使用一些建议,为什么这不起作用。谢谢,
答案 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');
}