Spring Boot 快速图片上传封装
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 | import com.alibaba.fastjson.JSONObject; import com.retailo2o.server.domain.base.ResponseData; import io.swagger.annotations.Api; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletRequest; import java.io.File; import java.io.IOException; import java.util.UUID; /** * 文件上传处理 * */ @RestController @RequestMapping ( "/webAPI" ) public class CommonController { private static final Logger log = LoggerFactory.getLogger(CommonController. class ); /** * 1.文件保存在服务器,url地址保存在数据库 * 上传成功之后返回成功保存的url地址 */ @RequestMapping (value = "/upload" , method = RequestMethod.POST) @ResponseBody public ResponseData upload( @RequestParam ( "file" ) MultipartFile file) { try { JSONObject jsonObject = new JSONObject(); if (file.isEmpty()) { System.out.println( "上传的文件为空!" ); return ResponseData.error( "上传的文件为空" ); } // 文件名 String fileName = file.getOriginalFilename(); // 获取文件后缀名 String extension = fileName.substring(fileName.indexOf( "." )); // 上传文件的路径 String uploadFolder = glbalUploadPath //D:/home/uploadPath/; // 生成一个新的文件名 fileName = UUID.randomUUID() + extension; File dest = new File(uploadFolder + fileName); // 检测文件目录是否存在 不存在则创建 if (!dest.getParentFile().exists()) { dest.getParentFile().mkdirs(); } try { file.transferTo(dest); } catch (IOException e) { e.printStackTrace(); } // 返回虚拟文件访问路径 jsonObject.put("fileName",fileName); jsonObject.put("url",globalpictureUrl+"/scm-server/upload/"+fileName); jsonObject.put("fileByte",file.getBytes()); return ResponseData.success(jsonObject); } catch (Exception ex) { System.out.println("文件为空"); return ResponseData.error("文件为空"); } } /** * 1.文件保存在服务器,url地址保存在数据库 * 上传成功之后返回成功保存的url地址 */ @PostMapping("/upload2") @ResponseBody public ResponseData uploadFile2(@RequestParam("file") MultipartFile file, HttpServletRequest request){ JSONObject jsonObject=new JSONObject(); if(!file.isEmpty()){ String uploadPath = "C:\\uploadFile"; // 如果目录不存在则创建 File uploadDir = new File(uploadPath); if (!uploadDir.exists()) { uploadDir.mkdir(); } String OriginalFilename = file.getOriginalFilename();//获取原文件名 String suffixName = OriginalFilename.substring(OriginalFilename.lastIndexOf("."));//获取文件后缀名 //重新随机生成名字 String filename = UUID.randomUUID().toString() +suffixName; File localFile = new File(uploadPath+"\\"+filename); try { file.transferTo(localFile); //把上传的文件保存至本地 /** * 这里应该把filename保存到数据库,供前端访问时使用 */ // return filename;//上传成功,返回保存的文件地址 jsonObject.put("fileName",filename); jsonObject.put("url",filename); System.out.println(filename); return ResponseData.success(jsonObject); }catch (IOException e){ e.printStackTrace(); System.out.println("上传失败"); return ResponseData.error("上传失败"); } }else{ System.out.println("文件为空"); return ResponseData.error("文件为空"); } } } |
再牛逼的梦想,也抵不住我傻逼似的坚持!别在该奋斗的年纪,贪图安逸。 今天多学一些知识,明天开发的速度就更快一下。后天你就会变得更好。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· 展开说说关于C#中ORM框架的用法!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?