el-upload怎么使用外部方法来请求后端路径,而不用写在el-upload的action里面
时间: 2023-10-13 13:21:03 浏览: 124
vue中element 的upload组件发送请求给后端操作
你可以使用 `before-upload` 属性来在上传之前触发一个方法,然后在这个方法里面使用 `axios` 或者其他方式来发起请求获取后端路径,最后将路径赋值给 `action` 属性即可。
以下是一个示例代码:
```vue
<template>
<el-upload
class="upload-demo"
:action="uploadUrl"
:before-upload="beforeUpload"
:on-success="onUploadSuccess"
:on-error="onUploadError"
:auto-upload="false"
:file-list="fileList"
>
<el-button slot="trigger" size="small" type="primary">选取文件</el-button>
<el-button size="small" type="success" @click="submitUpload">上传文件</el-button>
<div slot="tip" class="el-upload__tip">只能上传jpg/png文件,且不超过500kb</div>
</el-upload>
</template>
<script>
import axios from 'axios'
export default {
data() {
return {
uploadUrl: '',
fileList: []
}
},
methods: {
beforeUpload(file) {
return new Promise((resolve, reject) => {
// 发起请求获取后端路径
axios.get('/api/uploadUrl').then(res => {
this.uploadUrl = res.data.uploadUrl
resolve(file)
}).catch(error => {
reject(error)
})
})
},
onUploadSuccess(response, file, fileList) {
this.$message.success('上传成功')
},
onUploadError(error, file, fileList) {
this.$message.error('上传失败')
},
submitUpload() {
this.$refs.upload.submit()
}
}
}
</script>
```
在这个示例中,我们使用了 `before-upload` 属性来触发一个方法 `beforeUpload`,在这个方法里面发起了一个请求来获取后端路径,并将路径赋值给 `uploadUrl` 变量。最后,我们将 `uploadUrl` 变量作为 `action` 属性的值传递给 `el-upload` 组件。
这样就实现了在不写死上传路径的情况下,通过外部方法获取后端路径的目的。
阅读全文