oss文件的上传和下载
1.配置引入依赖
<dependency> <groupId>com.aliyun.oss</groupId> <artifactId>aliyun-sdk-oss</artifactId> <version>3.10.2</version> </dependency>
2.配置yml
#阿里云文件存储 aliyun: oss: file: endpoint: ********** # oss对外服务的访问域名 keyid: ***************** # 访问身份验证中用到用户标识 keysecret: ************** # 用户用于加密签名字符串和oss用来验证签名字符串的密钥 bucketname:********** # oss的存储空间
3.配置生效
import org.springframework.beans.factory.InitializingBean; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component; //当项目启动,spring接口,spring加载之后,执行接口的方法 @Component public class ConstantPropertiesUtils implements InitializingBean { //读取配置文件内容 @Value("${aliyun.oss.file.endpoint}") private String endPoint; @Value("${aliyun.oss.file.keyid}") private String keyId; @Value("${aliyun.oss.file.keysecret}") private String keySecret; @Value("${aliyun.oss.file.bucketname}") private String bucketName; //定义公开静态常量 public static String END_POINT; public static String KEY_ID; public static String KEY_SECRET; public static String BUCKET_NAME; @Override public void afterPropertiesSet() throws Exception { END_POINT = endPoint; KEY_ID = keyId; KEY_SECRET = keySecret; BUCKET_NAME = bucketName; } }
4.根据阿里文档撰写代码,上传文件到oss
//文件上传到oss @Override public String uploadFile(MultipartFile file) { // Endpoint以华东1(杭州)为例,其它Region请按实际情况填写。 String endpoint = ConstantPropertiesUtils.END_POINT; // 阿里云账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM用户进行API访问或日常运维,请登录RAM控制台创建RAM用户。 String accessKeyId = ConstantPropertiesUtils.KEY_ID; String accessKeySecret = ConstantPropertiesUtils.KEY_SECRET; // 填写Bucket名称,例如examplebucket。 String bucketName = ConstantPropertiesUtils.BUCKET_NAME; // 填写Object完整路径,完整路径中不能包含Bucket名称,例如exampledir/exampleobject.txt。 String objectName = "file"; try { // 创建OSSClient实例。 OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret); //获取文件的输入流 InputStream inputStream = file.getInputStream(); //获取文件名称 String uuid = UUID.randomUUID().toString().replace("-", ""); String fileName = file.getOriginalFilename(); //调用oss方法实现上传 //第一个参数:BucketName //第二个参数 上传文件路径和名称 //第三个参数 上传文件输入流 ossClient.putObject(bucketName, objectName+"/"+uuid+fileName, inputStream); //关闭ossClient ossClient.shutdown(); //返回上传路径 String url = "https://"+bucketName+"."+endpoint+"/"+objectName+"/"+uuid+fileName; return url; } catch (IOException e) { e.printStackTrace(); } return null; }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理