利用Spring Boot怎么样实现一个图片上传功能?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。
具体内容如下
package com.clou.inteface.domain.web.user;import java.io.File;import java.io.IOException;import java.util.HashMap;import java.util.Map;import org.apache.commons.lang3.StringUtils;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.beans.factory.annotation.Value;import org.springframework.http.MediaType;import org.springframework.web.bind.annotation.PostMapping;import org.springframework.web.bind.annotation.RequestParam;import org.springframework.web.bind.annotation.RestController;import org.springframework.web.multipart.MultipartFile;@RestControllerpublic class FileUpload { @Autowired private SUserService sUserService; @Value("${web.upload-path}") private String webUploadPath; @PostMapping(value = "/fileUpload", consumes = MediaType.MULTIPART_FORM_DATA_VALUE, produces = MediaType.APPLICATION_JSON_VALUE) public ResultVo fileUpload(@RequestParam("file") MultipartFile file, @RequestParam("userId") Integer userId) { ResultVo resultVo = new ResultVo(); if (!file.isEmpty()) { if (file.getContentType().contains("image")) { try { String temp = "images" + File.separator + "upload" + File.separator; // 获取图片的文件名 String fileName = file.getOriginalFilename(); // 获取图片的扩展名 String extensionName = StringUtils.substringAfter(fileName, "."); // 新的图片文件名 = 获取时间戳+"."图片扩展名 String newFileName = String.valueOf(System.currentTimeMillis()) + "." + extensionName; // 数据库保存的目录 String datdDirectory = temp.concat(String.valueOf(userId)).concat(File.separator); // 文件路径 String filePath = webUploadPath.concat(datdDirectory); File dest = new File(filePath, newFileName); if (!dest.getParentFile().exists()) { dest.getParentFile().mkdirs(); } // 判断是否有旧头像,如果有就先删除旧头像,再上传 SUser userInfo = sUserService.findUserInfo(userId.toString()); if (StringUtils.isNotBlank(userInfo.getUserHead())) { String oldFilePath = webUploadPath.concat(userInfo.getUserHead()); File oldFile = new File(oldFilePath); if (oldFile.exists()) { oldFile.delete(); } } // 上传到指定目录 file.transferTo(dest); // 将图片流转换进行BASE64加码 //BASE64Encoder encoder = new BASE64Encoder(); //String data = encoder.encode(file.getBytes()); // 将反斜杠转换为正斜杠 String data = datdDirectory.replaceAll("\\\\", "/") + newFileName; Map<String, Object> resultMap = new HashMap<>(); resultMap.put("file", data); resultVo.setData(resultMap); resultVo.setError(1, "上传成功!"); } catch (IOException e) { resultVo.setError(0, "上传失败!"); } } else { resultVo.setError(0, "上传的文件不是图片类型,请重新上传!"); } return resultVo; } else { resultVo.setError(0, "上传失败,请选择要上传的图片!"); return resultVo; } }}
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
软考中级精品资料免费领
- 历年真题答案解析
- 备考技巧名师总结
- 高频考点精准押题
- 资料下载
- 历年真题
193.9 KB下载数260
191.63 KB下载数245
143.91 KB下载数1139
183.71 KB下载数640
644.84 KB下载数2752
相关文章
发现更多好内容猜你喜欢
AI推送时光机利用Spring Boot怎么样实现一个图片上传功能
后端开发2023-05-31
Spring Boot 实现图片上传并回显功能
后端开发2024-04-02
利用Spring MVC怎么实现一个文件上传功能
后端开发2023-05-31
怎么在Spring Boot中利用ajax上传图片
后端开发2023-06-08
如何在Android中利用OkHttp实现一个图片上传功能
后端开发2023-05-31
利用Spring Boot怎么实现一个表单验证功能
后端开发2023-05-31
Android开发中怎么实现一个图片上传功能
后端开发2023-05-31
HTML5中怎么实现一个图片压缩上传功能
后端开发2024-04-02
如何在Android中利用OkHttp与php实现一个图片上传功能
后端开发2023-05-31
利用Struts怎么实现一个文件上传功能
后端开发2023-05-31
利用servlet怎么实现一个文件上传功能
后端开发2023-05-31
利用hadoop怎么实现一个文件上传功能
后端开发2023-05-31
使用Spring Boot怎么样实现一个验证码生成功能
后端开发2023-05-31
PHP怎么实现上传图片功能
后端开发2023-06-04
Html5 中怎么利用FileReader实现即时上传图片功能
后端开发2024-04-02
Spring MVC图片的上传和下载功能怎么实现
后端开发2023-07-05
怎么在HTML5中实现一个图片上传预处理功能
后端开发2023-06-09
php中怎么利用ajax实现无刷新上传图片功能
后端开发2024-04-02
利用java怎么实现一个将图片去色的功能
后端开发2023-05-31
利用servlet怎么实现一个文件上传下载功能
后端开发2023-05-31
咦!没有更多了?去看看其它编程学习网 内容吧