Skip to content

Upload 上传

规则

基础示例

js
const rule = {
    type: "upload",
    field: "pic",
    title: "轮播图",
    value: [
        'http://img1.touxiang.cn/uploads/20131030/30-075657_191.jpg',
        'http://img1.touxiang.cn/uploads/20131030/30-075657_191.jpg'
        ],
    props: {
        action: "/upload.php",
        limit: 2,
        onSuccess: function (file) {
            file.url = file.response.url;
        }
    },
}

Props 配置示例

图片上传

js
const rule = {
    type: "upload",
    field: "image",
    title: "商品图片",
    value: [],
    props: {
        action: "/upload.php",
        theme: "image",
        accept: "image/*",
        max: 5,
        multiple: true,
        onSuccess: function (file) {
            file.url = file.response.url;
        }
    },
}

文件上传

js
const rule = {
    type: "upload",
    field: "file",
    title: "附件上传",
    value: [],
    props: {
        action: "/upload.php",
        theme: "file",
        accept: ".pdf,.doc,.docx",
        max: 3,
        multiple: true,
        onSuccess: function (file) {
            file.url = file.response.url;
        }
    },
}

限制文件大小

js
const rule = {
    type: "upload",
    field: "file",
    title: "文件上传",
    value: [],
    props: {
        action: "/upload.php",
        accept: "image/*",
        onBeforeUpload: function (file) {
            if (file.size > 2 * 1024 * 1024) {
                return false; // 限制2MB
            }
            return true;
        },
        onSuccess: function (file) {
            file.url = file.response.url;
        }
    },
}

Events 事件示例

监听上传状态

js
const rule = {
    type: "upload",
    field: "file",
    title: "文件上传",
    value: [],
    props: {
        action: "/upload.php",
        onSuccess: function (file) {
            file.url = file.response.url;
        },
    },
    on: {
        change: (fileList, context) => {
            console.log('文件状态改变:', context.file.status);
        },
        fail: (file) => {
            console.log('上传失败:', file);
        },
        progress: (file) => {
            console.log('上传进度:', file.percent);
        },
    },
}

上传后更新其他字段

js
const rule = [
    {
        type: "upload",
        field: "cover",
        title: "封面图",
        value: [],
        props: {
            action: "/upload.php",
            theme: "image",
            accept: "image/*",
            max: 1,
            onSuccess: function (file) {
                file.url = file.response.url;
            },
        },
        inject: true,
        on: {
            change: ($inject, fileList, context) => {
                // 上传成功后,自动填充图片URL字段
                if (context.file.status === 'success' && context.file.url) {
                    $inject.api.setValue('coverUrl', context.file.url);
                }
            },
        },
    },
    {
        type: "input",
        field: "coverUrl",
        title: "封面URL",
        props: {
            disabled: true,
        },
    },
]

完整配置项:TDesign_Upload

value :Array | String

注意

文件上传成功后需要通过 onSuccess 回调, 将接口返回内容中的 url 赋值给 file.url.否则表单获取不到组件的数据

FormCreate 是一个开源项目,基于 MIT 许可证发布,欢迎个人和企业用户免费使用