【问题标题】:laravel missing file after image upload图片上传后laravel丢失文件
【发布时间】:2021-06-30 17:42:08
【问题描述】:

我想上传一张图片到一个子目录(public/uploads)。提交后返回成功但不保存图片

public function storeMedia(Request $request)
{
 $file = $request->file('productImage');
 $name = trim($file->getClientOriginalName());
 $folder = uniqid() . '_' . now()->timestamp;
 $file->storeAs('uploads/'.$folder, $name, ['disk' => 'public']);

 return $folder;
}

它返回60dc27eb0eb92_1625040875 这是我需要的但我找不到上传的文件

【问题讨论】:

  • 你有文件夹 public/uploads/$folder ?
  • 我相信它已经将它存储在Storage文件夹中了。
  • @workservice 谢谢,我能找到它,但我将它存储在公共/上传而不是存储文件夹中
  • @АлександрЧерножуков 是的,我有一个公共/上传文件夹
  • 您指定它应该在public 光盘中,所以它将在/storage/app/public/uploads 中。

标签: php laravel


【解决方案1】:

默认情况下,laravel 将文件存储在 storage 文件夹中。如果您希望您的图像文件需要被公开访问,那么您需要创建symbolic link

参考这个Laravel public disk

  1. 将文件夹链接路径放入config/filesystems.php

public_path('storage/uploads') => storage_path('app/public/uploads')

  1. 运行 artisan 命令创建符号链接

php artisan storage:link

这里你可以参考我对符号链接uploading file publicly accessible的另一个详细回答

【讨论】:

    【解决方案2】:

    在您的config/filesystems.php 文件中,搜索public_uploads 并将root 更新为public_path() . '/uploads',这样就可以解决问题了

    【讨论】:

    • @Daniel Mordi 记住这不是一个好方法。这样,您的所有文件都将直接上传到公共文件夹中,如果您不希望所有文件都可以公开访问,则会存在安全漏洞。
    • 有一种方法可以绕过这个并将它们也放入存储中
    • @workservice 你为什么要这样做,而不是使用 Laravel 的本地公共光盘?将它们存储在公共之外,并使用符号链接是最佳和标准的做法,这是有原因的..
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-07-22
    • 2014-10-13
    • 1970-01-01
    • 1970-01-01
    • 2019-06-30
    • 1970-01-01
    • 2020-01-23
    相关资源
    最近更新 更多