图片未在 laravel 中的 Public/Storage/images 中上传

image is not uploaded in Public/Storage/images in laravel

我想上传图片并存储在文件夹中。从我的代码中,我得到了图像的名称,但没有将它保存在文件夹中。存放图片的路径是:- /public/storage/images。我该怎么办? 控制器:-

if($req->hasFile('image'))
{
return $req->image->getClientOriginalName();
$path = $req->file('image')->store('/images');
}

查看:-

<div class="form-group">
<label class="control-label col-sm-2" for="file">Image:</label>
<div class="col-sm-10">          
<input type="file" class="form-control" id="file" placeholder="Choose photo" name="image">
</div>
</div>

路线:-

Route::view('Blog','pages.Blog');
Route::post('Blog','BlogController@Blogsinsertion');

文件系统:-

'public' => [
'driver' => 'local',
'root' => 'storage/',
'url' => env('APP_URL').'/storage',
'visibility' => 'public',
],

我认为您的问题是因为您在 store() 调用之前已经 returning,因此文件实际上并未保存。

此外,Laravel 的 documentation 有关于设置 public 磁盘的建议方法的说明,以便通过在 /public/storage/storage/app/public 但您可以根据需要更改位置。将文件系统配置文件中的 public 磁盘指向新的符号链接路径后,您可以尝试以下代码:

if($req->hasFile('image'))
{
    // This line will save and then returns the saved file name
    return $req->file('image')->store('/images','public');
}

如果您想要做的是用相同的名称而不是默认的散列名称保存上传的文件,那么您可以使用 storeAs() 方法,如下所示:

if($req->hasFile('image'))
{
    $uploadedFile = $req->file('image');

    // This line will save with same name and then returns the saved file name
    return $uploadedFile->storeAs('/images', $uploadedFile->getClientOriginalName(),'public');
}
public function Blogsinsertion(Request $request)
    {
        //.....


        if ($request->hasFile('image')) {

            $image = $request->file('image');
            $name = time().rand(1, 99999) . '.' . $image->getClientOriginalExtension();
            $Path = public_path('/storage/images');
            $image->move($Path, $name);

            //save name in db

            //yourmodel->image =  $name;


        }

        //........
    }