SpringBoot文件上传
文件上传
-
引入依赖
<!--文件上传--> <dependency> <groupId>commons-fileupload</groupId> <artifactId>commons-fileupload</artifactId> <version>1.4</version> </dependency>
-
接收上传的文件
/** * 图片上传 */ @PostMapping("/uploadImg") public R uploadImg(@RequestParam("file") MultipartFile file){ Integer s = goodsImgsService.uploadImg(file); System.out.println(s); return R.success(s); }
-
编写工具类
import org.springframework.stereotype.Component; import org.springframework.util.ResourceUtils; import org.springframework.web.multipart.MultipartFile; import java.io.File; import java.util.UUID; /** * @Author Sni * @Date 2023/2/16 21:34 * @Version 1.0 */ @Component public class MyUploadFile { /** * 上传文件 * * @param multipartFile 文件对象 * @return */ public String uploadFile(MultipartFile multipartFile) { try { // 获取上传文件的名称 String originalFilename = multipartFile.getOriginalFilename(); // 文件名后缀 String fileSuffix = originalFilename.substring(originalFilename.lastIndexOf(".")); // 利用UUID生成文件名 String uuid = String.valueOf(UUID.randomUUID()); // 获取指定的路径-在target\classes\static\upload\img\goods String basePath = ResourceUtils.getURL("classpath:").getPath() + "static/upload/img/goods/"; // 新的文件名,使用UUID生成文件名,防止后期重名 String fileName = uuid + fileSuffix; // 创建新的文件 File fileExist = new File(basePath); // 文件夹不存在,则新建 if (!fileExist.exists()) { fileExist.mkdirs(); } // 获取文件对象 File file = new File(basePath, fileName); // 完成文件的上传 multipartFile.transferTo(file); // 返回路径 return "/upload/img/goods/"+fileName; } catch (Exception e) { e.printStackTrace(); } return "error"; } }
前端代码(Vue+ElementUI)
<el-form-item label="样图上传"> <el-upload ref="upload" :action="BASE_API+'/goods-imgs/uploadImg'" list-type="picture-card" :on-success="handleAvatarSuccess" > <i class="el-icon-plus"></i> </el-upload> <el-dialog :visible.sync="dialogVisible"> <img width="100%" :src="dialogImageUrl" alt=""> </el-dialog> </el-form-item> <!-- 获取响应数据 --> <script> export default { data(){ return{ BASE_API:process.env.BASE_API,//IP地址+端口号 } }, methods: { handleAvatarSuccess(response,file,fileList){ this.form.goodsImgsId = response.data console.log(response);//获取上传文件后响应到的数据 } } } </script>
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· 终于写完轮子一部分:tcp代理 了,记录一下
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理