vue2上传文件实现,自定义的按钮选择文件,选择文件后,在输入框内显示文件路径,不使用elementui
时间: 2024-03-15 07:46:30 浏览: 123
实现 Vue2 文件上传可以使用原生的 input 标签和 FormData 对象,以下是一个简单的实现:
1. 在模板中添加一个 input 标签,设置为 file 类型,并设置样式为 display: none,这样就可以自定义一个按钮来触发文件选择事件:
```
<template>
<div>
<input ref="fileInput" type="file" @change="handleFileChange" style="display: none;">
<button @click="handleChooseFile">选择文件</button>
<input type="text" v-model="filePath">
<button @click="handleUpload">上传</button>
</div>
</template>
```
2. 在 Vue 实例中定义 filePath 和 file 对象,用于保存文件路径和文件内容:
```
<script>
export default {
data() {
return {
filePath: '',
file: null,
}
},
methods: {
handleChooseFile() {
this.$refs.fileInput.click();
},
handleFileChange(e) {
this.filePath = e.target.value;
this.file = e.target.files[0];
},
handleUpload() {
const formData = new FormData();
formData.append('file', this.file);
// TODO: 发送 formData 到后端进行文件上传
},
},
}
</script>
```
3. 在 handleFileChange 方法中,将选择的文件保存到 file 对象中,并将文件路径显示在输入框中。在 handleUpload 方法中,将文件内容保存到 FormData 对象中,并发送到后端进行文件上传。注意,这里需要自己实现文件上传的逻辑,可以使用 axios 或者其他的网络库发送请求。
以上就是一个简单的 Vue2 文件上传的实现。
阅读全文