怎么给一个网站做搜索功能,怎么建立一个平台,要制作网页,大型网站开发人员#x1f31f; 前言 欢迎来到我的技术小宇宙#xff01;#x1f30c; 这里不仅是我记录技术点滴的后花园#xff0c;也是我分享学习心得和项目经验的乐园。#x1f4da; 无论你是技术小白还是资深大牛#xff0c;这里总有一些内容能触动你的好奇心。#x1f50d; #x… 前言 欢迎来到我的技术小宇宙 这里不仅是我记录技术点滴的后花园也是我分享学习心得和项目经验的乐园。 无论你是技术小白还是资深大牛这里总有一些内容能触动你的好奇心。 洛可可白个人主页 个人专栏✅前端技术 ✅后端技术 个人博客洛可可白博客 代码获取bestwishes0203 封面壁纸洛可可白wallpaper 文章目录 Spring Boot中实现图片上传功能的两种策略摘要1. 保存到阿里云OSS1.1 依赖添加1.2 配置OSS客户端1.3 控制层实现 2. 保存到本地文件系统2.1 控制层实现 结语 Spring Boot中实现图片上传功能的两种策略
摘要
在现代Web应用程序中图片上传是一个常见的功能。本文将介绍如何在Spring Boot项目中实现图片上传包括将图片保存到阿里云OSS和本地文件系统两种方法。我们将通过代码示例和详细注释帮助读者理解这两种方法的实现过程。
1. 保存到阿里云OSS
1.1 依赖添加
首先我们需要在项目的pom.xml文件中添加阿里云OSS的SDK依赖以及用于文件操作的commons-io和commons-beanutils库。
!-- 阿里云OSS SDK --
dependencygroupIdcom.aliyun.oss/groupIdartifactIdaliyun-sdk-oss/artifactIdversion3.16.1/version
/dependency
!-- 文件操作工具类 --
dependencygroupIdcommons-io/groupIdartifactIdcommons-io/artifactIdversion2.11.0/version
/dependency
dependencygroupIdcommons-beanutils/groupIdartifactIdcommons-beanutils/artifactIdversion1.9.4/version
/dependency1.2 配置OSS客户端
创建一个工具类uploadUtil用于配置OSS客户端并实现图片上传功能。我们需要设置OSS的域名、访问密钥ID和密钥以及OSS的地域节点。
import com.aliyun.oss.OSS;
import com.aliyun.oss.OSSClientBuilder;
import org.apache.commons.io.FilenameUtils;
import org.springframework.web.multipart.MultipartFile;import java.io.IOException;
import java.util.UUID;public class UploadUtil {// OSS域名注意替换为实际的域名public static final String ALI_DOMAIN https://czh123-text.oss-cn-guangzhou.aliyuncs.com;// 上传图片到OSS的方法public static String uploadImage(MultipartFile file) throws IOException {// 获取原始文件名和扩展名String originalFilename file.getOriginalFilename();String ext . FilenameUtils.getExtension(originalFilename);// 生成新的文件名包含UUID以避免重名String uuid UUID.randomUUID().toString().replace(-, );String fileName uuid ext;// OSS配置信息String endpoint http://oss-cn-guangzhou.aliyuncs.com; // 地域节点String accessKeyId LTAI5tGOUpuc5EwDcJ9; // 访问密钥IDString accessKeySecret fYy0DdFrrFBwky; // 访问密钥Secret// 创建OSS客户端OSS ossClient new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);// 上传文件到OSSossClient.putObject(czh123-text, fileName, file.getInputStream());// 关闭客户端ossClient.shutdown();// 返回图片的URLreturn ALI_DOMAIN fileName;}
}1.3 控制层实现
在控制器中我们创建一个upImg方法用于处理图片上传请求。该方法调用uploadUtil类中的uploadImage方法并返回图片的URL。
PostMapping(/upImg)
public String upImg(MultipartFile file) throws IOException {return UploadUtil.uploadImage(file);
}2. 保存到本地文件系统
2.1 控制层实现
另一种方法是将图片保存到本地文件系统。在控制器中我们创建一个upload方法用于处理上传请求并将图片保存到指定的本地目录。
PostMapping(/upload)
public String upload(MultipartFile file) {if (file.isEmpty()) {return 图片为空;}// 获取原始文件名和扩展名String originalFilename file.getOriginalFilename();String fileNamePrefix new SimpleDateFormat(yyyyMMddHHmmssSSS).format(new Date());String fileNameSuffix . originalFilename.split(\\.)[1];// 生成新的文件名String fileName fileNamePrefix fileNameSuffix;// 获取项目根目录的绝对路径ApplicationHome applicationHome new ApplicationHome(this.getClass());String pre applicationHome.getDir().getParentFile().getParentFile().getAbsolutePath() /src/main/resources/static/images/;String path pre fileName;try {// 将上传的文件保存到本地file.transferTo(new File(path));// 返回文件的本地路径return path;} catch (IOException e) {e.printStackTrace();}return 图片上传失败;
}结语
本文介绍了在Spring Boot项目中实现图片上传的两种方法保存到阿里云OSS和保存到本地文件系统。通过这两种方法开发者可以根据项目需求和资源情况选择合适的图片存储策略。阿里云OSS提供了高可用性和扩展性适合需要远程访问和高并发的场景而本地文件系统则适合小型项目或对数据安全性要求不高的场景。在实际开发中开发者应根据实际情况灵活选择。
感谢你的访问期待与你在技术的道路上相遇