diff --git a/resources/views/forms/fields/file.blade.php b/resources/views/forms/fields/file.blade.php index 6a3a19d0c..ff2cb46f4 100644 --- a/resources/views/forms/fields/file.blade.php +++ b/resources/views/forms/fields/file.blade.php @@ -6,7 +6,7 @@ settings['multiple'] ? 'multiple': null }} /> diff --git a/src/Fieldtypes/FileFieldtype.php b/src/Fieldtypes/FileFieldtype.php index 523e54473..fbefd1fa4 100755 --- a/src/Fieldtypes/FileFieldtype.php +++ b/src/Fieldtypes/FileFieldtype.php @@ -93,6 +93,8 @@ public function persistRelationship($model, Field $field) $oldValues = $model->{$field->handle}->pluck('id'); $newValues = collect(); + $files = is_array($files) ? $files : [$files]; + foreach ($files as $key => $file) { foreach ((array) $field->settings['directory'] as $data) { /** @@ -114,6 +116,18 @@ public function persistRelationship($model, Field $field) // -- $model->{$field->handle}()->detach($oldValues); $model->{$field->handle}()->attach($newValues); + } else if (request()->filled($field->handle)) { + $oldValues = isset($model->{$field->handle}) ? $model->{$field->handle}->pluck('id') : []; + $newValues = collect($value ?? request()->input($field->handle)) + ->mapWithKeys(function ($value) use ($field) { + return [ + $value['id'] => [ + 'field_id' => $field->id, + ], + ]; + }); + $model->{$field->handle}()->wherePivot('field_id', $field->id)->detach($oldValues); + $model->{$field->handle}()->attach($newValues); } } diff --git a/src/Http/Controllers/Web/FileController.php b/src/Http/Controllers/Web/FileController.php index 309ef8923..91a618324 100644 --- a/src/Http/Controllers/Web/FileController.php +++ b/src/Http/Controllers/Web/FileController.php @@ -22,7 +22,7 @@ public function index($uuid, $name) return redirect()->to('/file/'.$uuid.'/'.$file->name.'?'.http_build_query($params)); } - if (in_array($file->mimetype, ['image/jpeg', 'image/gif', 'image/png'])) { + if (in_array($file->mimetype, ['image/jpeg', 'image/gif', 'image/png', 'image/webp'])) { return $this->imageResponse($file, $params); } @@ -32,7 +32,7 @@ public function index($uuid, $name) return Storage::disk($file->disk->handle)->response( $file->location, - $file->name, + $file->name.'.'.$file->extension, [ 'Content-Type' => $file->mimetype, ]