图像上传不会触发 Mutator
Posted
技术标签:
【中文标题】图像上传不会触发 Mutator【英文标题】:Mutator doesn't fire for image upload 【发布时间】:2018-06-24 14:22:24 【问题描述】:在 Backpack for Laravel 中处理一个涉及上传图片、视频等的项目。从简单的图片上传开始,我的模型中有一个 mutator,如下所示:
public function setThumbnailAttribute($value)
$attribute_name = "Thumbnail_URL";
$disk = "s3";
$destination_path = "images";
$this->uploadFileToDisk($value, $attribute_name, $disk, $destination_path);
但它似乎没有触发,并且每当“上传”文件时,它都会显示“C:\Windows\Temp\php6803.tmp”作为位置。
我的领域:
$this->crud->addField([
'name' => 'Thumbnail',
'label' => 'Thumbnail',
'type' => 'image',
'upload' => true,
'disk' => 's3'
]);
还有我在 filesystems.php 中的“s3”磁盘:
's3' => [
'driver' => 's3',
'key' => env('AWS_KEY'),
'secret' => env('AWS_SECRET'),
'region' => env('AWS_REGION'),
'bucket' => env('AWS_BUCKET'),
],
我已经仔细检查了 Thumbnail_URL 是否可以填写。我真的不确定我错过了什么。
【问题讨论】:
【参考方案1】:public function setThumbnailAttribute($value)
$attribute_name = "Thumbnail_URL";
$disk = "s3";
$destination_path = "images";
**MISSING** $this->attributes[$attribute_name] = '....' (image path/filename)
$this->uploadFileToDisk($value, $attribute_name, $disk, $destination_path);
【讨论】:
感谢您的帮助!这并没有改变我能看到的任何东西,仍然将它存储在 Ctemp 中,并且 S3 中没有任何内容。以上是关于图像上传不会触发 Mutator的主要内容,如果未能解决你的问题,请参考以下文章