上传图片 Laravel

Uploading image Laravel

我尝试在我的 /public/images/profils 目录中上传文件,但我不知道为什么,它不起作用!

这是我的控制器功能:

if ($request->hasFile('image')) {
        if ($request->file('image')->isValid()) {
            
            $validated = $request->validate([
                'image' => 'mimes:jpeg,png|max:2000',
            ]);
            $extension = $request->file('image')->extension();
            $name = uniqid('img_');
            $request->file('image')->storeAs('/public/images/profils', $name.'.'.$extension);
        }
    }

当我检查文件夹时,没有创建文件,但网站上没有出现错误。我补充说图像是从表单发送并通过验证

有人知道答案吗? 谢谢!

首先 laravel 有 2 个资产目录:

  • /public : 对于 public 资产
  • /storage/app : 用于存储私有资产

如果您想使用 $file->store 保存文件,它会根据 /storage/app

从您那里获得一个 相对 路径

如果你想创建资产 public,你必须创建一个像这样的符号链接:

/storage/app/public --> /public/storage

使用此符号链接,您可以访问 /storage/app/ 中的 public 目录,例如:

$file = $request->file("file");
$address = $file->store("public/tmp_pic");

稍后您可以通过 public url 访问它。

//your public URL will start from public directory
// and because of symlink you have to add /storage
$uri =  "/storage".substr($address, 6);

您可以通过 laravel artisan 命令添加符号链接,如下所示:

php artisan storage:link

或手动添加