Javascript

Filepond.js的最基本使用和服务端回显

本文主要是介绍Filepond.js的最基本使用和服务端回显,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

结论

默认颜值很高,而且提供了很多插件,但是它这个回显有点怪异,它需要你提供一个唯一标志,然后会通过load()方法发送请求请求已经上传的资源(图片,文件等),然后会自动读取文件的大小和文件名称参考地址:https://pqina.nl/filepond/docs/api/server/#load
image
这一点和以往使用过的文件上传插件有点不同,而且不太适应,Filepond.js是免费开源的。但是官网演示的那种酷炫的图片编辑效果,是需要Pintura插件来驱动的,插件是收费的。
image
image
我们单纯的用来做文件上传的话,是不用管的,可以放心使用。

使用

也是研究了好一会儿才弄清楚它这个最基本的使用

css

    <!-- Filepond CSS -->
    <link href="https://unpkg.com/filepond/dist/filepond.css" rel="stylesheet">
    <!--    FilePondPluginImagePreview 插件 CSS-->
    <link href="https://unpkg.com/filepond-plugin-image-preview/dist/filepond-plugin-image-preview.css"
          rel="stylesheet">
    <!--    FilePondPluginImageEdit 插件 CSS-->
    <link href="https://unpkg.com/filepond-plugin-image-edit/dist/filepond-plugin-image-edit.css" rel="stylesheet">
    <link
            href="https://unpkg.com/filepond-plugin-file-poster/dist/filepond-plugin-file-poster.css"
            rel="stylesheet"
    />

html

	 <div id="file"></div>

js

        const inputElement = document.querySelector('#file');

        FilePond.registerPlugin(
            FilePondPluginImagePreview,
            FilePondPluginFileValidateSize,
            FilePondPluginFileValidateType,
        );


        FilePond.setOptions({

            //表单名称
            name: 'file',
            // 设置单个URL是定义服务器配置的最基本形式。
            server: {
                //请求接口
                fetch: null,
                //还原接口
                revert: null,
                // load: (source, load, error) => {
                //     console.log(source, load, error);
                // },
                load: '/',
                process: {
                    url: '<{url('/article/cover')}>',
                    timeout: 7000,
                    method: 'POST',
                    headers: {
                        'x-customheader': 'Hello World',
                    },
                    withCredentials: false,
                    onl oad: (response) => console.log(response),
                    one rror: function (res) {
                        console.log("dsadsa");
                        return "上传错误啊啊啊";
                    },
                    ondata: (formData) => {
                        formData.append('Hello', 'World');
                        return formData;
                    },
                },

                //文件回显之后左边那个关闭按钮回调
                remove: (source, load, error) => {
                    // alert("dsadsa");
                    // Should somehow send `source` to server so server can remove the file with this source
                    // Can call the error method if something is wrong, should exit after
                    error('oh my goodness');
                    // Should call the load method when done, no parameters required
                    load();
                },

            },
            //false:上传失败不显示重试按钮 true:上传失败显示重试按钮(点击重试请求的是process配置的url接口)
            allowProcess: true,

            //关闭广告
            credits: false,
            // .jpg .gif .png .jpeg
            acceptedFileTypes: ['image/gif', 'image/png', 'image/jpeg'],
            //验证无效时提醒的映射
            fileValidateTypeLabelExpectedTypesMap: {'image/gif': '.gif', 'image/png': '.png', 'image/jpeg': '.jpg'},
            maxFileSize: '2MB',
            maxTotalFileSize: '6MB',
            //允许多选
            allowMultiple: true,
            //最大上传的文件数量
            maxFiles: 3,
            //并行上传最大文件数
            maxParallelUploads: 2,
            labelIdle: '拖放文件,或者 <span class="filepond--label-action"> 浏览 </span>',
            labelInvalidField: '字段包含无效文件',
            labelFileWaitingForSize: '计算文件大小',
            labelFileSizeNotAvailable: '文件大小不可用',
            labelFileLoading: '加载',
            labelFileLoadError: '加载错误',
            labelFileProcessing: '上传',
            labelFileProcessingComplete: '已上传',
            labelFileProcessingAborted: '上传已取消',
            labelFileProcessingError: '上传出错',
            labelFileProcessingRevertError: '还原出错',
            labelFileRemoveError: '删除出错',
            labelTapToCancel: '点击取消',
            labelTapToRetry: '点击重试',
            labelTapToUndo: '点击撤消',
            labelButtonRemoveItem: '删除',
            labelButtonAbortItemLoad: '中止',
            labelButtonRetryItemLoad: '重试',
            labelButtonAbortItemProcessing: '取消',
            labelButtonUndoItemProcessing: '撤消',
            labelButtonRetryItemProcessing: '重试',
            labelButtonProcessItem: '上传',
            labelMaxFileSizeExceeded: '文件太大',
            labelMaxFileSize: '最大值: {filesize}',
            labelMaxTotalFileSizeExceeded: '超过最大文件大小',
            labelMaxTotalFileSize: '最大文件大小:{filesize}',
            labelFileTypeNotAllowed: '文件类型无效',
            fileValidateTypeLabelExpectedTypes: '应为 {allButLastType} 或 {lastType}',
            imageValidateSizeLabelFormatError: '不支持图像类型',
            imageValidateSizeLabelImageSizeTooSmall: '图像太小',
            imageValidateSizeLabelImageSizeTooBig: '图像太大',
            imageValidateSizeLabelExpectedMinSize: '最小值: {minWidth} × {minHeight}',
            imageValidateSizeLabelExpectedMaxSize: '最大值: {maxWidth} × {maxHeight}',
            imageValidateSizeLabelImageResolutionTooLow: '分辨率太低',
            imageValidateSizeLabelImageResolutionTooHigh: '分辨率太高',
            imageValidateSizeLabelExpectedMinResolution: '最小分辨率:{minResolution}',
            imageValidateSizeLabelExpectedMaxResolution: '最大分辨率:{maxResolution}'
        });

效果

image

回显

主要是通过实例化对象,调用 addFile,第一个参数是唯一标志,第二个参数是固定格式,然后它会把唯一标志,以get方式拼接到 配置项server中load提供的接口地址中发起一个请求,会自动读取到文件大小,服务端需要返回一个文件对象,同时还需要携带文件名。

        pond.addFile('/uploads/article/1/20211217/12c063a69ea359cb60540b9f3fe996f12.jpg',
            {
                type: 'local',
            }
        );

        pond.addFile('/uploads/article/1/20211214/2a5fd8c52150f7fc4658daa07fe7b9bb.rar',
            {
                type: 'local',
            }
        );
这篇关于Filepond.js的最基本使用和服务端回显的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!