文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

利用Spring Boot怎么样实现一个图片上传功能

2023-05-31 14:10

关注

利用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

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 资料下载
  • 历年真题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     801人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     348人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     311人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     432人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     220人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯