public 的目录和 laravel 中的私有文件

directory for public and private file in laravel

我想使用 Laravel 框架创建一个销售高质量照片的网站。 我想在主屏幕上向大家展示照片模型。 但原始文件(zip)可以在购买后下载。 是不是最好把mockup文件放在Storage/app/public路径,zip文件放在Storage/app/files路径? 如果这样做,我可以使用 php artisan storage:link 访问模型文件并将其显示在主屏幕上。但是我不知道怎么下载zip文件。

如果这种存储文件和模型的方法正确、安全且标准,请告诉我如何访问 zip 文件。 但如果这是错误的方式,请告诉我放置文件和模型的正确位置

如果它对每个人来说都是 public 那么将它设为 public 就没有问题,所以如果您要使用本地驱动程序并希望在您的存储文件夹中访问文件,那么您会 运行 一个像下面这样的 artisan 命令

php artisan storage:link

这将确保文件可以访问 public仅作为示例。com/public/storage/whateverfile。

但是,对于购买图片的人,您需要使用身份验证或授权来处理它,例如。如果您希望文件仅供经过身份验证的用户访问,那么也许您可以将文件放在 storage/myViewFile 中,这将确保文件夹中的文件无法 public 访问。然后使用带有 auth 中间件的控制器或带有中间件的路由,您可以使文件可访问。

Route::get('/storage/files/{file}', 'FilesController@show')->middleware('auth');

对于下载文件,您可以使用 laravel 下载响应

show 方法中完成
return response()->download($pathToFile);
//or
return response()->download($pathToFile, $name, $headers);
//or
return response()->download($pathToFile)->deleteFileAfterSend();