用springboot,vue,mybatis和elementUI实现上传文件到数据库,需要上传到数据库的内容有文件名,文件上传时间,文件路径,上传者的编号
时间: 2023-05-20 09:05:37 浏览: 126
springboot整合vue实现上传下载文件
可以使用Spring Boot提供的MultipartFile类来处理文件上传,使用MyBatis操作数据库,使用Vue和ElementUI实现前端页面。以下是一个简单的实现步骤:
1. 创建一个包含文件名、上传时间、文件路径和上传者编号的Java类,例如FileEntity。
2. 创建一个包含上传文件的表单页面,使用Vue和ElementUI实现。
3. 在Spring Boot中创建一个Controller,处理文件上传请求。使用MultipartFile类获取上传的文件,并将文件信息保存到FileEntity中。
4. 在MyBatis中创建一个Mapper,将FileEntity保存到数据库中。
5. 在前端页面中显示上传的文件列表,可以使用Vue和ElementUI实现。
以下是一个简单的代码示例:
FileEntity.java:
```java
public class FileEntity {
private String fileName;
private Date uploadTime;
private String filePath;
private int uploaderId;
// getters and setters
}
```
FileController.java:
```java
@RestController
public class FileController {
@Autowired
private FileMapper fileMapper;
@PostMapping("/upload")
public String uploadFile(@RequestParam("file") MultipartFile file, @RequestParam("uploaderId") int uploaderId) {
if (file.isEmpty()) {
return "上传失败,请选择文件";
}
try {
// 获取文件名和上传时间
String fileName = file.getOriginalFilename();
Date uploadTime = new Date();
// 保存文件到服务器
String filePath = "/path/to/upload/" + fileName;
file.transferTo(new File(filePath));
// 保存文件信息到数据库
FileEntity fileEntity = new FileEntity();
fileEntity.setFileName(fileName);
fileEntity.setUploadTime(uploadTime);
fileEntity.setFilePath(filePath);
fileEntity.setUploaderId(uploaderId);
fileMapper.insertFile(fileEntity);
return "上传成功";
} catch (IOException e) {
e.printStackTrace();
return "上传失败:" + e.getMessage();
}
}
}
```
FileMapper.xml:
```xml
<mapper namespace="com.example.mapper.FileMapper">
<insert id="insertFile" parameterType="com.example.entity.FileEntity">
insert into file (file_name, upload_time, file_path, uploader_id)
values (#{fileName}, #{uploadTime}, #{filePath}, #{uploaderId})
</insert>
</mapper>
```
upload.vue:
```html
<template>
<div>
<el-upload
class="upload-demo"
action="/upload"
:data="{ uploaderId: uploaderId }"
:on-success="handleSuccess"
:before-upload="beforeUpload"
:file-list="fileList"
multiple>
<el-button size="small" type="primary">点击上传</el-button>
<div slot="tip" class="el-upload__tip">只能上传jpg/png文件,且不超过500kb</div>
</el-upload>
</div>
</template>
<script>
export default {
data() {
return {
uploaderId: 123,
fileList: []
}
},
methods: {
beforeUpload(file) {
const isJPG = file.type === 'image/jpeg' || file.type === 'image/png';
const isLt500K = file.size / 1024 < 500;
if (!isJPG) {
this.$message.error('上传头像图片只能是 JPG/PNG 格式!');
}
if (!isLt500K) {
this.$message.error('上传头像图片大小不能超过 500KB!');
}
return isJPG && isLt500K;
},
handleSuccess(response, file, fileList) {
this.fileList = fileList;
this.$message.success('上传成功');
}
}
}
</script>
```
阅读全文