我使用voyager BREAD系统遇到了上传图片的问题。如果我使用BREAD删除或更新图像,则不会替换或删除旧图像。它仍然在存储目录中。我正在使用laravel 5.5的最新版旅行者。有没有解决这个问题的方法?提前谢谢。
答案 0 :(得分:0)
嘿,请检查项目的vendor/tcg/voyager/src/http/controllers/VoyagerBreadController.php
目录
并检查此
public function deleteBreadImages($data, $rows) {...}
第403行的功能。
在此函数中查找$this->deleteFileIfExists($data->{$row->field});
使其取消注释并检查。
我希望这可以帮助你
答案 1 :(得分:0)
Laravel Voyager 1.2 类文件
public function deleteBreadImages($data, $rows) {...}
vendor/tcg/voyager/src/http/controllers/VoyagerBreadController.php
在搜索了同一天的问题两天后,我想出了硬性解决方案...
在我的情况下,图片字段名称为 img ,型号名称为公司
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);
}
}
});
}
}