【发布时间】:2018-05-30 16:31:13
【问题描述】:
我在使用 voyager BREAD 系统上传图片时遇到了问题。如果我使用 BREAD 删除或更新图像,则旧图像不会被替换或删除。它仍然在存储目录中。我正在使用最新版本的 voyager 和 laravel 5.5。这个问题有什么解决办法吗?提前谢谢您。
【问题讨论】:
我在使用 voyager BREAD 系统上传图片时遇到了问题。如果我使用 BREAD 删除或更新图像,则旧图像不会被替换或删除。它仍然在存储目录中。我正在使用最新版本的 voyager 和 laravel 5.5。这个问题有什么解决办法吗?提前谢谢您。
【问题讨论】:
Laravel Voyager 1.2 类文件中没有 public function deleteBreadImages($data, $rows) {...} 了 vendor/tcg/voyager/src/http/controllers/VoyagerBreadController.php
在谷歌搜索同一问题两天后,我找到了硬解...
在我的情况下,图像字段名称是 img,模型名称是 Company
代码在模型 BREAD 更新时执行
适用于 Voyager 1.2 希望对你有帮助))
use Storage;
class Company extends Model
{
public static function boot()
{
parent::boot();
static::updating(function($model)
{
// Check if Old File Exists
$oldFileExists = Storage::disk('public')->exists($model->original['img']);
// If Old File Exists DELETE it, else Continue Adding New Image
if($oldFileExists)
{
//Get File Extension:: .jpg .png .gif
$fileExt = substr(strrchr($model->original['img'], "."), 0);
//If File is not .GIF
if($fileExt != '.gif'){
// Delete Old Non-GIF Image
Storage::disk('public')->delete($model->original['img']);
}
// Find .gif , -static.gif Old Images And Delete
else{
// filename-static.gif
$staticOld = str_replace($fileExt,"-static".$fileExt,$model->original['img']);
// Delete Old Image.gif
Storage::disk('public')->delete($model->original['img']);
// Delete Old Image-static .gif if Exists
if($staticOld) Storage::disk('public')->delete($staticOld);
}
}
});
}
}
【讨论】:
您好,请检查您项目的vendor/tcg/voyager/src/http/controllers/VoyagerBreadController.php 目录中的以下文件
检查一下
public function deleteBreadImages($data, $rows) {...}
第 403 行的函数。
在此函数中找到$this->deleteFileIfExists($data->{$row->field}); 使其取消注释并检查。
希望对你有帮助
【讨论】: