我是Laravel的新手,我试图存储私有图像,这样只有经过身份验证的用户才能访问它们。首先,我将图像存储在公共/用户图像文件夹中。但是在这里,所有的图片也可以被未经身份验证的用户访问,方法是检查chrome元素,然后更改用户ID。请帮帮我..。
发布于 2015-02-17 13:49:46
这真的取决于你。它需要在public目录之外--我个人会选择resources/uploads或storage/uploads,或者将它们存储在服务器之外,完全使用云文件系统支持。
无论您选择什么,您都需要一条获取文件的路由,并在第一次检查用户是否有访问权限后将其传递给用户。
发布于 2015-04-15 21:10:19
下面是我如何解决在Laravel 5中存储图像的问题,这样只有经过身份验证的用户才能查看图像。未通过身份验证的人员将被定向到登录页面。我的服务器是Ubuntu/Apache2 2服务器。
Route::get('/images/{file}','ImageController@getImage');当然,这假设test.jpg是/var/www/YOURWEBSITE/app/Asset/Image/中的一个文件。
当然,您可以添加更多的逻辑,例如不对图像路径进行硬编码,等等。这只是一个执行身份验证的简单示例。注意在控制器构造函数中使用中间件(‘auth’)。
发布于 2017-03-31 04:37:28
几天前,我遇到了同样的问题,并想出了一个解决方案:
storage/app/invoices中。上传文件和生成url的代码如下:
//这是在处理POST请求的控制器方法中进行的。$path =$request->file(‘发票’)->store(‘发票’);$url = env('APP_URL') .Illuminate\Support\Facades\Storage::url($path);
返回的url应该会产生类似于http://yourdomain.com/storage/invoices/uniquefilename.jpg的内容。auth middleware来确保对用户进行身份验证的控制器。然后,定义一个方法,从私有目录抓取文件并将其作为文件响应返回。这将是:routes/web.php文件中注册路由:
路线:get(‘/storage/{file_name}’,'FileController')->where('file_name‘=> '.*')这里有一个非常可重用的片段,用于处理私有文件的所有项目:)
https://stackoverflow.com/questions/28562908
复制相似问题