Filepond 在 Laravel Livewire 中调整大小

Filepond Resize In Laravel Livewire

如果我到了这一点,我会诚实地浏览并尝试每一个可能的例子。我的另一个选择是使用干预,但如果这是文件池中的一个选项,它应该可以工作。

老实说,我需要一双新眼睛,因为我可能遗漏了一些东西。

问题

问题是文件未按调整大小保存。它们仍然保存为全尺寸上传。 我正在尝试将所有图像的大小调整为 600x600,但是当我加载一个 2mb 的文件 1600x1000 时,它不会调整它的大小。文件以原始格式保存。

问题 2 这是新的,上传的第一张图片会从预览中消失,但如果我保存它就会保存它。这个快把我逼疯了。

我的Blade文件

 <x-filepond wire:model="photos"  multiple/> 

FilePond 组件


 <div 
     
            wire:ignore
    
            x-data=""
            x-cloack
            x-init="
                        FilePond.registerPlugin(FilePondPluginImagePreview , FilePondPluginImageResize);
                        allowMultiple: {{ isset($attributes['multiple']) ? 'true' : 'false' }},
                        FilePond.setOptions({
                
                            server: {
                                process:(fieldName, file, metadata, load, error, progress, abort, transfer, options) =>{
                                    @this.upload('{{ $attributes['wire:model']}}', file, load, error, progress)
                                },
                
                                revert: (filename, load) => {
                                    @this.removeUpload('{{ $attributes['wire:model'] }}', filename, load)
                                },
                            },

                            
                
                        });

                        const  pond = FilePond.create($refs.input,{
                            acceptedFileTypes: ['image/png', 'image/jpeg', 'image/jeg'],
                            imagePreviewHeight: 270,
                            allowImageResize: true,
                            imageResizeTargetWidth: 600,
                            imageResizeTargetHeight: 600,
                            imageResizeMode: 'contain',
                            imageResizeUpscale: 'false',

                        });

                        this.addEventListener('pondReset', e => {
                            pond.removeFiles();
                        });           
    
            " 
       
            >
            
            <input type="file" x-ref="input">

Livewire 组件

public $photos = [];

....

   if($this->photos){
            foreach ($this->photos as $photo) {
                $storedImageUrl = $photo->store('photos');
                $photos = new Images;
                $photos->url = $storedImageUrl;
                $photos->post_id = $post->id;
                $photos->save();
            }

        }

您必须注册图像转换插件才能应用更改。

调整大小插件仅计算所需的大小更改。这是一个单独的插件,因为一些开发人员希望在服务器上应用更改。

<div wire:ignore
     x-data=""
     x-cloack
     x-init="FilePond.registerPlugin(
         FilePondPluginImagePreview, 
         FilePondPluginImageResize, 
         FilePondPluginImageTransform <--
     );