如何从 Laravel Livewire 的属性中删除上传的文件?

Posted

技术标签:

【中文标题】如何从 Laravel Livewire 的属性中删除上传的文件?【英文标题】:How to remove uploaded file from property in Laravel Livewire? 【发布时间】:2022-01-05 03:40:50 【问题描述】:

我正在使用 livewire 上传文件,我的输入模型必须是多个上传的文件,并在提交前向用户显示预览,但由于某种原因,用户想要从文件属性中删除图像或文件,如何我可以这样做吗?

【问题讨论】:

【参考方案1】:

我发现最好的方法是使用 php split() 函数删除文件,只需将文件的索引号传递给函数并将其从文件属性数组中删除

例如: 调用以下方法签证wire:click="1"Livewire.emit('deleteFile','1')

public function deleteFile($fileIndex)

    if($this->media != null)
        \array_splice($this->media, (int)$mediaURl, 1);
    else
        $this->media = null;
    

但请记住,您必须在方法往返完成后更新前面的每个文件预览索引,您可以通过如下所示的 livewire 组件的调度和浏览器事件来实现这一点

public function deleteFile($fileIndex)

    if($this->media != null)
        \array_splice($this->media, (int)$mediaURl, 1);
    else
        $this->media = null;
    
    $this->dispatchBrowserEvent('showDeleteBtn');

【讨论】:

以上是关于如何从 Laravel Livewire 的属性中删除上传的文件?的主要内容,如果未能解决你的问题,请参考以下文章

在 Laravel 8 Jetstream 的 Blade 组件中绑定 Livewire 属性

Laravel Livewire 绑定模型 Carbon 属性

属性 [livewire] 不存在

出现错误“在初始化之前不能访问类型属性” - Laravel Livewire

dompdf 没有从 Laravel 8 和 Livewire 视图下载 PDF

如何在 Laravel 7 中使用 Livewire 显示存储路径中的图像