<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<script src="https://unpkg.com/vue"></script>
<title>Vue</title>
</head>
<body>
<div id="app">
<div @click="click" class="center">
<img src="src/assets/img/team.png" alt="">
</div>
<span>{{fileName}}</span>
<input type="file" ref="uploadFile" style="display:none" accept="image/*" @change="upload"/>
</div>
<script>
var app = new Vue({
el: '#app',
data: {
fileName: ''
},
methods: {
click () {
// 触发文件上传
this.$refs.uploadFile.click();
document.getElementById('uploadFile').click()
},
upload (event) {
let files = event.target.files || event.dataTransfer.files;
if (!files.length) {
this.fileName = '';
return;
}
this.fileName = files[0].name;
// 上传之后调用接口...
let params = new FormData();
params.append('file', files[0]);
console.log(params);
this.$refs.uploadFile.value = null; // 移除文件,可以保证上传同样的文件时,也会触发change事件
}
}
})
</script>
</body>
<style>
.center{
position: absolute;
top: 50%;
left: 50%;
}
</style>
</html>
根据自己的需要修改,可以加一个遮罩层,在调用接口后修改透明度,图片上传后从接口处获得返回的图片url,之后可以用双向绑定修改显示的图片,这样又可以实现预览的功能。