vue+elementui+springboot实现文件上传
前端代码
elupload.vue文件
- 属性action是文件上传的地址,也就是平时我们调用的接口
- el-upload自带了一个submit方法是用来上传文件的
- 如果要自定义submit的话el-upload需要加上:http-request="submit"
<template>
<el-form :model="form">
<el-form-item label="上传文件" :label-width="formLabelWidth">
<el-upload ref="uploadDemo" action="/api/elupload" :auto-upload="false" multiple :file-list="fileList">
<el-button size="small" type="primary">选择文件</el-button>
</el-upload>
</el-form-item>
<el-form-item>
<el-button size="small" type="primary" @click="uploadFile">立即上传</el-button>
<el-button size="small">取消</el-button>
</el-form-item>
</el-form>
</template>
<script>
export default {
data() {
return {
formLabelWidth: '80px',
form: {
file: ''
},
fileList: []
}
},
methods: {
uploadFile() {
this.$refs.uploadDemo.submit()
}
// submit(params) { // 如果要自定义submit的话el-upload需要加上:http-request="submit"
// console.log(params)
// const form = new FormData()
// form.append('xml', params.file)
// this.$http.post('/elupload', form, {
// headers: {
// 'Content-Type': 'multipart/form-data'
// }
// }).then(() => {
// this.$notify({
// title: '成功',
// message: '导入成功',
// type: 'success',
// duration: 2000
// })
// })
// }
}
}
</script>
vue.config.js文件用来代理跨域
- 这个demo的代理路径需要rewrite到根路径'/'
module.exports = {
devServer: {
proxy: {
'/api': {
target: 'http://localhost:7070',
secure: false,
changeOrigin: true,
pathRewrite: {
'^/api': '/'
}
}
}
}
}
后端代码
@RestController
@CrossOrigin
public class ElUpload {
@Value("${filepath}")
public String filePath;
@RequestMapping("/elupload")
public String elUpload(MultipartFile file){
String fileName = file.getOriginalFilename();
File dest = new File(filePath + fileName);
try {
file.transferTo(dest);
return "上传成功";
} catch (IOException e) {
e.printStackTrace();
}
return "上传失败!";
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!