laravel - Laravel 旧图像未使用 getOriginal 方法删除
问题描述
在我的 Laravel 7 项目中,我正在根据 Stationname
字段重命名上传的图像。Str::of($name)->slug()
使用如下所示将字符串转换为 slug
命名图像
public function setStationName($extension, $name)
{
return 'station-' . Str::of($name)->slug() . '.' . $extension;
}
所以它会生成一个名字station-foo-bar.png
,最后将这个名字存储photo
到数据库的列中。
由于该name
字段是可编辑的,因此用户将能够随时更改名称字段,并且如果用户正在上传修改了名称字段的新图像,则新图像将具有新名称。
在这里我遇到了麻烦。
在使用新图像和修改字段更新记录时,如果我使用该方法删除旧图像getOriginal('photo)
,则不会删除图像。name
但是,如果未修改该字段,它将删除图像。
车站模型
public function deletePhoto()
{
Storage::disk('public')->delete($this->stationPhotoDir . '/' . $this->getOriginal('photo'));
}
当我dd
检查它的值时,getOriginal('photo')
它返回了我想要删除但它没有删除的正确文件名。
问题:
如何使用该
getOriginal()
方法删除旧图像?
解决方案
您的问题不是getOriginal
,而是删除操作中的路径不正确。
添加Log::info($this->stationPhotoDir . '/' . $this->getOriginal('photo'))
并查看路径显示的内容。
推荐阅读
- http - 如何让 HTTP 服务器 nginx 使用 HTTP 多部分请求上传文件?
- kotlin - Vertx 中的协程从不执行?
- ssh - 如何建立 ssh 连接
- reactjs - 如何创建带有文本框和按钮的网页
- swift - SwiftUI——在应用程序中转到主屏幕的按钮
- swift - 如何使用 FSCalendar 为日期显示 2 个不同颜色的点?
- flutter - 在 Flutter 中点击单选按钮时隐藏键盘
- node.js - Node.js 命名管道导致 ERROR_INVALID_PARAMETER
- javascript - 当表单中所需的输入字段为空时,如何模拟未调用提交处理程序?
- asp.net-core - .net 核心控制器操作使用 HttpContext 共享值