uni-app web端input(file)上传文件

  1. 创建上传文件标签
<view ref="input" class="input">
	附件上传
</view>
// uni-app input不支持type=“file”类型所以需要js创建
mounted() {
	// 创建附件上传
	var _self = this;
	var input = document.createElement('input');//创建元素
	input.type = 'file'//添加file类型
	input.onchange = (event) => {
		_self.upFile(input, event)
	}
	this.$refs.input.$el.appendChild(input)
},
//上传
methods: {
	upFile(input, event) {
		var _self = this;
		uni.uploadFile({
			url: url,
			files: [
				{
					file: input.files[0],
					uri: event.srcElement.value
				}
			],
			success: (uploadFileRes) => {
				console.log(uploadFileRes)
			},
			fail: (err) => {
				console.log(err)
			}
		});
	},
}

简单封装

	<view class="content">
		<view ref="input" class="input">
			<text>上传文件</text>
		</view>
	</view>
	export default {
		props:{
			url: String,
			accept: {
				type: String,
				default: ''
			}
		},
		mounted() {
			// 创建附件上传
			var _self = this;
			var input = document.createElement('input');//创建元素
			input.type = 'file'; //添加file类型
			input.accept = this.accept; //允许上传的文件类型
			input.style = 'opacity: 0;width:100px;height:35px;'
			input.onchange = (event) => {
				_self.upFile(input, event)
			}
			this.$refs.input.$el.appendChild(input)
		},
		//上传
		methods: {
			upFile(input, event) {
				var _self = this;
				uni.uploadFile({
					url: this.url,
					files: [
						{
							file: input.files[0],
							uri: event.srcElement.value
						}
					],
					success: (uploadFileRes) => {
						_self.$emit('upFileChange', uploadFileRes)
					},
					fail: (err) => {
						console.log('err:'+err)
					}
				});
			},
		}
	}
	.input{
		overflow: hidden;
		display: inline-block;
		position: relative;
		background: skyblue;
		text{
			position: absolute;
			top: 0;
			left: 0;
			width: 100%;
			height: 100%;
			font-size: 14px;
			color: #fff;
			display: flex;
			align-items: center;
			justify-content: center;
		}
	}

使用

属性类型默认值说明必传
urlString上传到服务器的地址
acceptStringimage/jpeg允许上传的文件类型
upFileChangeEventHandle点击上传文件触发
<uploadFile :url="url" :accept="accept" @upFileChange="upFileChange"></uploadFile>
import uploadFile from '文件路径/uploadFile.vue';
	export default {
		components:{ uploadFile },
		data(){
			return{
				url: '上传服务器地址',
				accept: 'image/jpeg' //允许上传的文件类型
			}
		},
		methods:{
			upFileChange(val){
				console.log(val)
			}
		}
	}
  • 6
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值