首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何处理laravel 5中的私人图像?

如何处理laravel 5中的私人图像?
EN

Stack Overflow用户
提问于 2015-02-17 13:44:27
回答 4查看 27.2K关注 0票数 18

我是Laravel的新手,我试图存储私有图像,这样只有经过身份验证的用户才能访问它们。首先,我将图像存储在公共/用户图像文件夹中。但是在这里,所有的图片也可以被未经身份验证的用户访问,方法是检查chrome元素,然后更改用户ID。请帮帮我..。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2015-02-17 13:49:46

这真的取决于你。它需要在public目录之外--我个人会选择resources/uploadsstorage/uploads,或者将它们存储在服务器之外,完全使用云文件系统支持

无论您选择什么,您都需要一条获取文件的路由,并在第一次检查用户是否有访问权限后将其传递给用户。

票数 15
EN

Stack Overflow用户

发布于 2015-04-15 21:10:19

下面是我如何解决在Laravel 5中存储图像的问题,这样只有经过身份验证的用户才能查看图像。未通过身份验证的人员将被定向到登录页面。我的服务器是Ubuntu/Apache2 2服务器。

  1. 创建目录/var/www/YOURWEBSITE/app/资产/映像
  2. 将路由添加到app/Http/Broades.php中。 Route::get('/images/{file}','ImageController@getImage');
  3. 创建一个控制器应用程序/Http/ controller /ImageController.php
  4. 在您的视图中,您有img标记,这些标记具有: Src=“{url(‘/映像/test.jpg’)}”

当然,这假设test.jpg是/var/www/YOURWEBSITE/app/Asset/Image/中的一个文件。

当然,您可以添加更多的逻辑,例如不对图像路径进行硬编码,等等。这只是一个执行身份验证的简单示例。注意在控制器构造函数中使用中间件(‘auth’)。

票数 18
EN

Stack Overflow用户

发布于 2017-03-31 04:37:28

几天前,我遇到了同样的问题,并想出了一个解决方案:

  1. 您必须做的第一件事是将文件上传到非公共目录。我的应用程序正在存储扫描过的发票,所以我要把它们放在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的内容。
  2. 现在,您必须创建一个使用auth middleware来确保对用户进行身份验证的控制器。然后,定义一个方法,从私有目录抓取文件并将其作为文件响应返回。这将是:
  3. 最后一件事是在routes/web.php文件中注册路由: 路线:get(‘/storage/{file_name}’,'FileController')->where('file_name‘=> '.*')

这里有一个非常可重用的片段,用于处理私有文件的所有项目:)

票数 15
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28562908

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档