Skip to content

File 文件上传

文件上传

基本用法

    1. 支持文件上传
    1. 支持图片上传并预览
    1. 支持拖拽和粘贴上传
<template>
    <dn-page>     
      <dn-form ref="formRef" v-bind="formOptions">       
      </dn-form>            
    </dn-page>   
  </template>
  
<script lang="jsx">
import {ref,defineComponent} from "vue";
import {   useForm } from "@sdevnet/devnet-form";

const formRef = ref();
const formOptions = ref();
function createFormOptions() {
  const { buildFormOptions } = useForm();
  return buildFormOptions({
    columns: {     
      fn1: {
        title: "单个文件",
        type: "uploaderfile",
        form: {
          col:{span:24},
          rules:[],
          tooltip:'只能传一个',         
          props:{
            limit:1,
            uploaderOption:{
                data:{
                    //上传时的表单附加参数
                    form:'test'
                }
            },
            value:"/upload/401.png",
            events:{
              onChange:(scope)=>{
                console.log('out',scope);
              }
            }        
          }                   
        }      
      },
      fn3:{
        type:'split',
        form:{            
            props:{
                text:'分割线'
            }
        }
      },
      fn2: {
        title: "Ctrl选择多个文件",
        type: "uploaderfile",
        form: {
          col:{span:24},
          tooltip:{
            text:'限制 2 个文件,最大 1 M',
            color:'#ff0000'
          },
          component:{
            multiple:true
          },
          props:{
            limit:2,
            sizeLimit:1024 * 1024,
            value:'/upload/404.png'
          }                   
        }      
      },
      fn4:{
        type:'split',
        form:{            
            props:{
                text:'分割线'
            }
        }
      },
      fn5: {
        title: "图片上传",
        type: "uploaderimage",
        form: {
          col:{span:24}, 
          component:{
            multiple:true
          },        
          tooltip:{
            text:'限制 2 个文件,最大 1 M',
            iconColor:'red',
            position:'label'
          },
          props:{        
            limit:2,    
            sizeLimit: 1024 * 1024,            
            preview:{
              minScale:0.5
            },
            value: "/upload/logo.jpg,/upload/logo2.jpg",            
            events:{
              onChange:(scope)=>{
                console.log('out',scope);
              }
            }  
          }                   
        }      
      },
      fn6: {
        title: "拖拽上传",
        type: "uploaderimage",
        form: {
          col:{span:24}, 
          component:{
            multiple:true,
            drag:true
          },                  
          props:{        
            limit:5,    
            sizeLimit: 1024 * 1024                           
          }                   
        }      
      },
      fn7:{
        type:'split',
        form:{            
            props:{
                text:'分割线'
            }
        }
      },
      fn8: {
        title: "粘贴上传",
        type: "uploaderimage",
        form: {
          col:{span:24}, 
          component:{
            multiple:true,
            paste:true
          },                  
          props:{        
            limit:5,    
            sizeLimit: 1024 * 1024                   
          }                   
        }      
      },
    } ,
    form:{
      labelPosition:'left'
    }   
  });
}

function initFormOptions() { 
  formOptions.value = createFormOptions();
  formOptions.value.initData = { fid:1,fn1:null};
 
  return {
    formOptions,   
    formRef
  };
}

export default defineComponent({
  setup() {
    return {
      ...initFormOptions()
    };
  }
});
</script>

File API

PropsNameDescriptionTypeDefault
uploadOptions上传配置参考项目集成json
key字段名称子组件column配置json
└ title标题string
└ typeuploaderfile
uploaderimage
string
└ form表单栏位配置json
└└ rules验证规则,参考原生el配置array
└└ colel-col配置,参考原生组件json
└└ component原生组件属性json
└└└ multiple是否Ctrl+多选booleanfalse
└└└ drag是否拖拽上传booleanfalse
└└└ paste是否粘贴上传,true则自动开启拖拽上传booleanfalse
└└└ key参考原生el组件
└└ props组件属性json
└└└ limit上传数量number1
└└└ sizeLimit上传文件大小,字节单位number
└└└ deleteConfirm删除文件确认提示booleantrue
└└└ uploaderOption上传选项json
└└└└ uploadMode上传模式'' / ftp / http 等
└└└└ data上传附加参数json
└└└└└ key附加参数any
└└└ events组件事件json
└└└└ onChange值change触发
└└└└ onBeforeUpload上传前,返回不是空字符串则提示后取消上传
└└└└ onBeforeRemove移除前,返回不是空字符串则提示后取消上传
└└└ slots组件槽位,json
└└└└ key组件槽位,参考原生槽位
└└ tooltip输入提示内容string
└└ order排序number
└└ show是否显示boolean

File 事件

NameDescription
file-select
success
exceed ,throw 则取消
原生事件component下写事件,参考原生组件事件

File Slots

NameDescription
key_[原生组件槽位名称]原生槽位

File Exposes

NameDescription
ctlRef原生组件引用
hasUploading是否上传中,