spring boot+vue图像上传并回显
时间: 2023-12-02 09:05:06 浏览: 112
好的,您想了解如何使用Spring Boot和Vue实现图像上传和回显功能。这可以使用Spring Boot的REST API和Vue的axios来实现。您可以使用Multer或Apache Commons FileUpload或Spring的MultipartFile来处理文件上传,并将其保存在服务器上。对于图像回显,您可以将其保存在数据库或服务器上,并使用Vue的img元素将其显示在网页上。请让我知道是否需要更详细的帮助。
相关问题
springBoot+vue 图片上传及回显的代码实现
后端代码实现:
1.引入相关依赖
```xml
<!-- 文件上传 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.4</version>
</dependency>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.6</version>
</dependency>
```
2.配置文件上传相关信息
```yaml
# 文件上传限制
spring.servlet.multipart.max-file-size=10MB
spring.servlet.multipart.max-request-size=10MB
spring.servlet.multipart.enabled=true
```
3.编写文件上传接口
```java
@RestController
@RequestMapping("/api/file")
public class FileController {
@PostMapping("/upload")
public String upload(@RequestParam("file") MultipartFile file) throws IOException {
if (file.isEmpty()) {
return "文件为空";
}
String fileName = file.getOriginalFilename();
String filePath = "D:\\temp\\";
File dest = new File(filePath + fileName);
file.transferTo(dest);
return "上传成功";
}
}
```
前端代码实现:
1.安装 axios 和 element-ui
```bash
npm install axios element-ui --save
```
2.编写文件上传组件
```vue
<template>
<div>
<el-upload
class="upload-demo"
action="/api/file/upload"
:auto-upload="false"
:on-change="handleChange"
>
<el-button slot="trigger" type="primary">选取文件</el-button>
<el-button v-if="imageUrl" type="success" @click="handleUpload">上传到服务器</el-button>
<div class="el-upload__tip" slot="tip">只能上传jpg/png文件,且不超过10MB</div>
</el-upload>
<img v-if="imageUrl" :src="imageUrl" style="max-width: 100%;">
</div>
</template>
<script>
import axios from 'axios';
import { Message } from 'element-ui';
export default {
data() {
return {
imageUrl: '',
file: null,
};
},
methods: {
handleChange(file) {
this.file = file.raw;
this.imageUrl = URL.createObjectURL(this.file);
},
handleUpload() {
const formData = new FormData();
formData.append('file', this.file);
axios.post('/api/file/upload', formData, {
headers: {
'Content-Type': 'multipart/form-data',
},
}).then(() => {
Message.success('上传成功');
}).catch(() => {
Message.error('上传失败');
});
},
},
};
</script>
```
至此,图片上传及回显的代码实现就完成了。
springboot +vue+elupload图片回显
首先,你需要在前端页面使用 el-upload 组件上传图片,并将图片的 base64 编码作为参数发送到后端。
然后,在后端使用 Spring Boot 编写接口,接收前端传来的图片的 base64 编码,将其解码成字节数组,再将字节数组转换成文件保存到服务器上。
在接口返回时,将图片的 URL 返回给前端,前端可以使用该 URL 在浏览器中显示图片。
下面是一个简单的示例代码:
前端代码:
```vue
<template>
<div>
<el-upload
class="upload-demo"
action="/uploadImage"
:on-success="handleSuccess"
:before-upload="beforeUpload"
:headers="{ Authorization: 'Bearer ' + token }"
:data="{ userId: 123 }"
:show-file-list="false"
>
<el-button size="small" type="primary">点击上传</el-button>
</el-upload>
<img :src="imageUrl" v-if="imageUrl" />
</div>
</template>
<script>
export default {
data() {
return {
imageUrl: "",
token: "your_token",
};
},
methods: {
handleSuccess(response, file, fileList) {
this.imageUrl = response.url;
},
beforeUpload(file) {
const isJPG = file.type === "image/jpeg";
const isPNG = file.type === "image/png";
const isLt2M = file.size / 1024 / 1024 < 2;
if (!isJPG && !isPNG) {
this.$message.error("上传图片只能是 JPG/PNG 格式!");
return false;
}
if (!isLt2M) {
this.$message.error("上传图片大小不能超过 2MB!");
return false;
}
return true;
},
},
};
</script>
```
后端代码:
```java
@RestController
public class UploadController {
@PostMapping("/uploadImage")
public String uploadImage(@RequestParam("file") String base64Image, @RequestParam("userId") Long userId) throws IOException {
// 解码 base64 图片
String[] base64ImageParts = base64Image.split(",");
byte[] decodedBytes = Base64.getDecoder().decode(base64ImageParts[1]);
// 保存图片到服务器
String fileName = userId + "-" + UUID.randomUUID().toString() + ".jpg";
Path path = Paths.get("/path/to/save/" + fileName);
Files.write(path, decodedBytes);
// 返回图片 URL
return "http://your_domain.com/" + fileName;
}
}
```
注意,这只是一个简单的示例代码,你需要根据自己的实际需求进行适当的修改。
阅读全文