Laravel:上传文件夹创建在错误的目录中



我有一个带有文件输入的表单,可以保存。

$request->validate([
'name'=> 'required|min:3',
'image'=> 'required|image|mimes:jpeg,png,jpg'
]);
$category = new Category();
$category->name = $request->name;
$path = $request->file('image')->store('categories_images');
$category->image = $path;

上面的代码所做的是从请求中获取图像字段,并将其保存到categories_images文件夹中。当我第一次上传一个文件进行测试时,它在存储/app中创建了文件夹。

我的问题是,我想预览我的网站上的图像:

//store.state.serverPath returns: http://localhost:8000 -> this is right
<img :src="`${$store.state.serverPath}/storage/${category.image}`" class="image-wd"/>

当我在nrowser中检查它时,它说:

http://localhost:8000/storage/categories_images/adGR57Gq6lNUqRVvEubRDfxNMZzEhya3A7oESUox.png未找到

它期望图像在存储/app/public中,但每次我在存储/app/strong>中上传图像时都会创建categories_images文件夹。我是不是遗漏了什么?

我似乎不能只发布评论作为回答。让我补充一下我的意见。你创建了你的符号链接吗?如果现在不做,或者直接重做。当我把代码从mac移植到windows时,我也遇到了同样的问题。即使所有的配置都做得很好,链接也与我的mac有关。我刚刚为我的代码修复了这个问题。谢谢你的提问。

php artisan storage:link

此外,store的第一个参数是要将文件保存在storage/public目录下的路径。你需要在你的url中附加目录名才能找到文件。这是我在一个项目中使用的代码。

$path = isset($validated['document']) ? $path = $request->file('document')->store('pdfs', 'public') : null;

该文件将使用网址www.example.com/storage/pdfs/$path 访问

document是文件输入的名称。

您错过了教程中他更改配置的部分->使用此的filesystems.php

'local' => [
'driver' => 'local',
'root' => storage_path('app/public'),
],

最新更新