【问题标题】:Uploading image Laravel上传图片 Laravel
【发布时间】:2021-03-20 00:09:18
【问题描述】:

我尝试在我的/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);
        }
    }

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

有人有答案吗? 谢谢!

【问题讨论】:

  • 嗨 Devix,欢迎来到 stackoverflow。您的帖子不够详细,以下是您可以改进的方法:通过显示包含应用程序磁盘列表的文件您的请求的 DD POST
  • 一般方法应该是上传到storage/app/public/images/profils,然后通过php artisan storage:linkstorage/app/public符号链接到publiclaravel.com/docs/8.x/filesystem#the-public-disk
  • 欢迎来到stackoverflow。看看File Storage 部分点击:click here。本节将介绍上传图像/文件所需的内容。请记住发布详细的问题,其中包含块代码和每个块代码的详细信息,以及您迄今为止尝试过的内容。编码愉快!
  • 请检查mimes:jpg而不是mimes:jpeg,并确保在使用存储之前运行php artisan storage:link

标签: laravel file upload


【解决方案1】:

首先,laravel 有 2 个资产目录:

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

如果您想使用$file->store 保存文件,它会从您那里获得基于/storage/app相对路径

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

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

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

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

您可以稍后通过公共网址访问它。

//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

或手动添加

【讨论】:

    猜你喜欢
    • 2015-06-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-30
    • 2020-11-26
    • 1970-01-01
    • 2020-01-21
    • 2014-05-11
    相关资源
    最近更新 更多