springboot + vue+elementUI實現(xiàn)圖片上傳功能
1.實現(xiàn)背景
前端上傳一張圖片,存到后端數(shù)據(jù)庫,并將圖片回顯到頁面上。上傳組件使用現(xiàn)成的elementUI的el-upload。、
2.前端頁面

<el-upload
class="upload-demo"
action="http://xxxx.xxx.xxx:9090/file/upload"
:show-file-list="false"
multiple
:limit="3"
:on-success="handleAvatarSuccess1"
>
<img v-if="package1" :src="package1" class="avatar" alt="">
<i v-else class="el-icon-plus avatar-uploader-icon"></i>
</el-upload>點擊上傳后,將圖片發(fā)送到action后面的接口,之后后端返回圖片,回顯到img標(biāo)簽。
3.接口實現(xiàn)
前提:SQL已有一張image表:

application.yml文件中配置圖片存儲的位置
files:
upload:
path: /www/nndemo/sb/ #這里是服務(wù)器的文件位置,如果是本地項目,改成某磁盤某文件夾即可接口實現(xiàn):
package com.tt.springboot.controller;
import cn.hutool.core.io.FileUtil;
import cn.hutool.core.util.IdUtil;
import cn.hutool.core.util.StrUtil;
import com.tt.springboot.entity.Images;
import com.tt.springboot.mapper.FileMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletResponse;
import java.io.File;
import java.io.IOException;
import java.net.URLEncoder;
/**
* @author TT
* @date 2023-10-26 14:47:13
* @description 文件上傳下載接口
* @parms file 前端傳遞過來的文件
*/
@RestController
@RequestMapping("/file")
public class FileController {
@Autowired
FileMapper fileMapper;
@Value("${files.upload.path}")
private String fileUploadPath; //圖片最終存儲的位置
@PostMapping("/upload")
public String upload(@RequestParam MultipartFile file) throws IOException {
String originalFilename = file.getOriginalFilename(); //原始名稱
String type = FileUtil.extName(originalFilename);//文件類型
long size = file.getSize(); //大小
//存儲到磁盤
File uploadParentFile = new File(fileUploadPath);
if (!uploadParentFile.exists()){ //文件目錄是否存在
uploadParentFile.mkdirs();
}
//定義一個文件唯一標(biāo)識碼
String uuid = IdUtil.fastSimpleUUID();
String fileUuid = uuid + StrUtil.DOT + type;
File uploadFile = new File(fileUploadPath + fileUuid);
//把獲取到的文件存儲到磁盤中去
file.transferTo(uploadFile);
//存儲到數(shù)據(jù)庫
String url = "http://xxxx.xxxx.xxx:9090/file/" + fileUuid;
Images saveFiles = new Images();
saveFiles.setName(originalFilename);
saveFiles.setSize(size);
saveFiles.setType(type);
saveFiles.setUrl(url);
fileMapper.saveFile(saveFiles); // 存入數(shù)據(jù)庫,這里項目比較簡單,沒有三層架構(gòu)
return url;
}
@GetMapping("/{fileUUID}")
public void download( HttpServletResponse response, @PathVariable String fileUUID) throws IOException {
File uploadFile = new File(fileUploadPath + fileUUID);
ServletOutputStream outputStream = response.getOutputStream();
response.setHeader("Content-Disposition","attachment;filename=" + URLEncoder.encode(fileUUID,"UTF-8"));
response.setContentType("application/octet-stream");
outputStream.write(FileUtil.readBytes(uploadFile));
outputStream.flush();;
outputStream.close();
}
}fillMapper實現(xiàn):
@Mapper
public interface FileMapper {
@Insert("insert into images(name,size,type,url) values (#{name},#{size},#{type},#{url})")
void saveFile(Images files);
}到此這篇關(guān)于springboot + vue+elementUI實現(xiàn)圖片上傳功能的文章就介紹到這了,更多相關(guān)springboot vue圖片上傳內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- 使用Springboot+Vue實現(xiàn)文件上傳和下載功能
- 基于SpringBoot和Vue實現(xiàn)頭像上傳與回顯功能
- Vue?+?SpringBoot?實現(xiàn)文件的斷點上傳、秒傳存儲到Minio的操作方法
- springboot+vue實現(xiàn)阿里云oss大文件分片上傳的示例代碼
- Java實現(xiàn)大文件的分片上傳與下載(springboot+vue3)
- springboot整合vue2-uploader實現(xiàn)文件分片上傳、秒傳、斷點續(xù)傳功能
- 利用Springboot+vue實現(xiàn)圖片上傳至數(shù)據(jù)庫并顯示的全過程
- Vue+Element+Springboot圖片上傳的實現(xiàn)示例
- Springboot+Vue-Cropper實現(xiàn)頭像剪切上傳效果
相關(guān)文章
Vue3中Excel導(dǎo)出的性能優(yōu)化與實戰(zhàn)指南
這篇文章主要為大家詳細(xì)介紹了使用Vue3如何實現(xiàn)Excel導(dǎo)出功能并進(jìn)行優(yōu)化的相關(guān)知識,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下2025-07-07
vue甘特圖vxe-gantt實現(xiàn)點擊任務(wù)條彈出編輯表單效果
本文將介紹如何使用 vxe-gantt 組件實現(xiàn)點擊任務(wù)條彈出編輯表單的功能,支持對任務(wù)的名稱、時間、進(jìn)度、負(fù)責(zé)人、圖片附件等信息進(jìn)行編輯,感興趣的朋友跟隨小編一起看看吧2026-03-03

