vue 封装选择文件组件和选择文件api

方式一、选择文件组件

<template>
	<div @click="clickHandle">
       <slot></slot>
	   <input type="file" hidden  
	   ref="inputRef" 
	   @change="changeFile" 
	   :accept="accept"
	   :multiple="multiple"
	  /> 
	</div>
</template>

<script>
	export default {
		name:'ChooseFile',
		props:{
			accept:{
				type:String
			},
			multiple:{
				type:Boolean,
				default:false
			}
		
		},
		methods: {
			clickHandle() {
				this.$refs.inputRef.click()
			
			},
			changeFile(e){
				
				this.$emit('chooseFile',e.target.files)
			}
		},
	}
</script>

<style scoped>

</style>

方式二、选择文件api

const ChooseFile = (options) => {
	if(typeof options ==='function'){
		options={success:options}
	}
	if (typeof options === 'object') {
		let input = document.createElement("input")
		document.body.appendChild(input)
		input.type = 'file'
		input.hidden='hidden'
		if (options.accept) {
			input.accept = options.accept
		}
		if (options.multiple != null) {
			input.multiple = options.multiple
		}
		input.click()
		input.onchange = (e) => {
				options.success(e.target.files)
				document.body.removeChild(input)
		}
	}
}
export default ChooseFile

挂载在vue原型上

使用

this.$chooseFile((files)=>console.log(files))
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值