我在使用 voyager BREAD System 上传图片时遇到了问题。如果我使用 BREAD 删除或更新图像,则旧图像不会被替换或删除。它仍然在存储目录中。我正在使用最新版本的 voyager 和 laravel 5.5。这个问题有什么解决办法吗?提前谢谢您。</p>
问问题
2397 次
2 回答
0
嘿,请检查您项目vendor/tcg/voyager/src/http/controllers/VoyagerBreadController.php
目录中的以下文件
并检查这个
public function deleteBreadImages($data, $rows) {...}
函数在第 403 行。
在这个函数中找到$this->deleteFileIfExists($data->{$row->field});
使它取消注释并检查。
我希望这对你有帮助吗
于 2017-12-22T10:52:33.447 回答
0
Laravel Voyager 1.2类文件中public function deleteBreadImages($data, $rows) {...}
不再存在vendor/tcg/voyager/src/http/controllers/VoyagerBreadController.php
在谷歌搜索同一问题两天后,我找到了硬解……
在我的情况下,图像字段名称是img,型号名称是公司
代码在 Model BREAD更新时执行
适用于航海者 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);
}
}
});
}
}
于 2019-09-27T16:53:50.950 回答