首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在FilePond中加载默认图像

如何在FilePond中加载默认图像
EN

Stack Overflow用户
提问于 2022-03-07 09:57:37
回答 1查看 955关注 0票数 2

根据文档服务器对load的配置,应该返回一个包含头内容的文件对象,但是文件对象意味着什么呢?看上去怎么样?

使用下面的代码,我只能正确地加载图像名,我还需要加载预览图像和文件大小。

Javascript

代码语言:javascript
复制
<script>
    FilePond.registerPlugin(FilePondPluginFileValidateType);
    FilePond.registerPlugin(FilePondPluginFileValidateSize);
    FilePond.registerPlugin(FilePondPluginImagePreview);
    FilePond.registerPlugin(FilePondPluginFilePoster);
    FilePond.setOptions({
        server: {
            process: '/upload',
            revert: '/remove',
            load: '/load/?serverId=',
            headers: {
                'X-CSRF-TOKEN': '{{ csrf_token() }}'
            }
        }
    });

    const inputElement = document.querySelector('#filepond');
    const pond = FilePond.create(inputElement, {
        files: [
            @foreach ($productItem->galleries as $gallery)
            {
                source: '{{ $gallery->id }}',
                options: {
                    type: 'local',
                }
            },
            @endforeach
        ],
        acceptedFileTypes: ['image/*'],
        maxFileSize: '5MB',
        onremovefile: (error, file) => {
            if (error) {
                console.log('Oh no');
                return;
            }

            console.log('File removed', file.getMetadata('serverId'));
        }
    })
</script>

代码语言:javascript
复制
public function load(Request $request) {
        $file = FileItem::find($request->serverId);

        return response()
        ->json($file->path, 200, [
            'Content-Disposition' => "inline; filename='$file->filename'",
        ]);
    }
EN

回答 1

Stack Overflow用户

发布于 2022-06-09 03:02:38

我看你用的是拉拉维尔,而不是白手起家。我建议你使用https://github.com/rahulhaque/laravel-filepond

易于使用,如果您想加载一个初始的图像或文件。你只需要一点定制。我就是这样处理的。

代码语言:javascript
复制
        FilePond.registerPlugin(
            FilePondPluginFileValidateType,
            FilePondPluginImagePreview,
        );

        // this is the url of image.
        let url = `{{ $slider->getFirstMedia('sliders')->getUrl() }}`;

        FilePond.setOptions({
            server: {
                url: "{{ config('filepond.server.url') }}",
                headers: {
                    'X-CSRF-TOKEN': "{{ @csrf_token() }}",
                },
                load: (source, load, error, progress, abort, headers) => {
                    // now load it using XMLHttpRequest as a blob then load it.
                    let request = new XMLHttpRequest();
                    request.open('GET', source);
                    request.responseType = "blob";
                    request.onreadystatechange = () => request.readyState === 4 && load(request.response);
                    request.send();
                },
            }
        });

        // don't forget to set options local to tell filepond this is already uploaded
        // parameter sourse ask for url.
        FilePond.create(document.querySelector('#cover'), {
            acceptedFileTypes: ['image/png', 'image/jpeg'],
            files: [{
                source: url,
                options: {type: 'local'},
            }],
        });

飞秒

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71379274

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档