【问题标题】:how and where can store images with laravel?如何以及在哪里可以使用 laravel 存储图像?
【发布时间】:2016-07-07 22:56:08
【问题描述】:

我可以如何以及在哪里使用 laravel 存储图像?

上下文: 我想在我的主视图中显示一些图像(这些是我预定义的)。 我也想存储用户上传的图片,但是不知道在哪里存储这些图片。

我想从视图中调用这些...

非常感谢您的帮助。 :)

【问题讨论】:

    标签: laravel laravel-5.2


    【解决方案1】:

    只要你有创建目录和文件的权限,基本上你可以在 Laravel 应用程序中的任何地方保存你的文件。

    但我更喜欢将文件保存在storage/app 文件夹中。 Laravel 提供了一个简单的 API 来操作磁盘上的文件。请参阅docs


    更新:

    这个答案是在 Laravel 5.2 版本时发布的。 从 5.3 版开始,您可以通过运行 artisan 命令 php artisan storage:link 轻松创建符号链接。请参阅docs

    【讨论】:

    • 那是我正在寻找的文档。谢谢你:)
    • @RecoJhonatan 确保完成此步骤:“您应该创建一个从 public/storage 到 storage/app/public 的符号链接”。之后,您可以在刀片视图中使用 assets() 函数显示图像。
    • :) 很好的答案但重要的图像,我建议将它们保存在安全且不公开的地方
    【解决方案2】:

    在 myapp/public/images 中为图像创建目录并将图像保存在那里。

    <img src="{{URL('/images/logo.jpg')}}">
    

    【讨论】:

    • 您不必使用 URL 辅助函数。你可以这样:
    【解决方案3】:

    如果您想在您的网站上显示它们,请将它们存储在您的公共目录中。由于它们是由用户上传的,因此您需要通过表单传递它们。这是控制器的示例。

      $file = Input::file('picture');
      $file->move(public_path().'/images/',$user->id.'.jpg');
    

    用户将提交带有图片字段的表单。上面两行将其存储在图像文件夹中的公共目录中,并以相关用户的 id 作为其名称。您最好在数据库中为图像及​​其路径制作模型。如果这样做,请在上述两行之后添加这些行。

     $image = new Image;
     $image->path='/images/'.$user->id.'.jpg';
     $image->user_id = $user->id;
     $image->save();
    

    要在视图中显示它,只需在控制器中将 $image 变量设置为正确的图像模型并将其传递给视图。然后在图片的src中弹出它的路径。

     <img src={{$image->path}} alt={{$image->path}}> 
    

    【讨论】:

    • 嗨,我有一个问题。这会暗示图像存储在公用文件夹中吗?恶意用户可能有办法在我不希望的情况下访问多媒体内容?
    • 可能。这就是为什么您只在此处存储个人资料图片等内容的原因。敏感文件应放在存储目录中。
    猜你喜欢
    • 2021-05-04
    • 2016-11-16
    • 1970-01-01
    • 2023-03-14
    • 1970-01-01
    • 1970-01-01
    • 2012-03-22
    • 2013-02-09
    • 1970-01-01
    相关资源
    最近更新 更多