用springboot和vue2写一个文件上传接口。
时间: 2023-05-15 07:08:06 浏览: 166
vue+springboot图片上传和显示的示例代码
5星 · 资源好评率100%
好的,这个问题可以回答。首先,你需要在Spring Boot中创建一个RESTful API,用于处理文件上传请求。然后,你需要使用Vue2来创建一个简单的前端界面,用于上传文件并显示上传进度。最后,你需要将这两个组件集成在一起,以便用户可以通过前端界面上传文件并将其保存到服务器上。以下是一个简单的示例代码:
Spring Boot后端代码:
```
@RestController
public class FileUploadController {
@PostMapping("/upload")
public String handleFileUpload(@RequestParam("file") MultipartFile file) {
String fileName = StringUtils.cleanPath(file.getOriginalFilename());
try {
// 保存文件到服务器
Path path = Paths.get("uploads/" + fileName);
Files.copy(file.getInputStream(), path, StandardCopyOption.REPLACE_EXISTING);
} catch (IOException e) {
e.printStackTrace();
return "上传失败!";
}
return "上传成功!";
}
}
```
Vue2前端代码:
```
<template>
<div>
<input type="file" @change="uploadFile">
<div v-if="uploading">
上传进度:{{ progress }}%
</div>
</div>
</template>
<script>
export default {
data() {
return {
uploading: false,
progress: 0
};
},
methods: {
uploadFile(event) {
this.uploading = true;
const file = event.target.files[0];
const formData = new FormData();
formData.append("file", file);
axios.post("/upload", formData, {
headers: {
"Content-Type": "multipart/form-data"
},
onUploadProgress: progressEvent => {
this.progress = Math.round(
(progressEvent.loaded * 100) / progressEvent.total
);
}
}).then(response => {
console.log(response.data);
this.uploading = false;
this.progress = 0;
}).catch(error => {
console.log(error);
this.uploading = false;
this.progress = 0;
});
}
}
};
</script>
```
请注意,这只是一个简单的示例代码,你需要根据你的实际需求进行修改和扩展。
阅读全文