el-upload上传文件点击预览
时间: 2023-11-17 07:01:58 浏览: 438
要实现el-upload上传文件后点击预览的功能,可以通过以下步骤实现:
1. 在el-upload组件中添加一个自定义的slot,用于显示预览按钮。
2. 在handleFileChange函数中,将上传的文件保存到一个数组中,同时为每个文件生成一个唯一的id。
3. 在预览按钮的点击事件中,根据文件的id获取对应的文件内容,并将其显示在一个弹窗中。
4. 在弹窗中添加一个删除按钮,用于删除当前预览的文件。
代码示例:
```
<el-upload
class="upload-demo"
ref="uploadFile"
:auto-upload="false"
:action="testForm.actionUrl"
drag
:file-list="testForm.fileList"
:on-change="handleFileChange"
:on-remove="removeFile"
:limit="1"
:on-exceed="overLimitCount"
>
<el-button slot="trigger" size="small" type="primary">选择文件</el-button>
<div slot="tip" class="el-upload__tip">只能上传jpg/png文件,且不超过500kb</div>
<el-button slot="preview" size="small" type="text" @click="showPreview">预览</el-button>
</el-upload>
data() {
return {
testForm: {
fileList: [],
fileContentList: []
},
previewFileId: '',
isShowPreview: false
}
},
methods: {
handleFileChange(files, fileList) {
this.testForm.fileList = fileList
files.forEach(file => {
const reader = new FileReader()
reader.readAsText(file.raw)
reader.onload = e => {
const fileContent = e.target.result.replace(/\n|\r\n/g, '<br/>')
this.testForm.fileContentList.push({
id: file.uid,
content: fileContent
})
}
})
},
showPreview() {
if (this.testForm.fileContentList.length > 0) {
this.previewFileId = this.testForm.fileContentList[0].id
this.isShowPreview = true
}
},
removeFile(file, fileList) {
const index = this.testForm.fileContentList.findIndex(item => item.id === file.uid)
if (index !== -1) {
this.testForm.fileContentList.splice(index, 1)
}
},
removePreview() {
const index = this.testForm.fileContentList.findIndex(item => item.id === this.previewFileId)
if (index !== -1) {
this.testForm.fileContentList.splice(index, 1)
this.isShowPreview = false
}
}
},
computed: {
previewFileContent() {
const file = this.testForm.fileContentList.find(item => item.id === this.previewFileId)
return file ? file.content : ''
}
}
```
阅读全文