
阿里云OSS上传文件 工具类拿来直接用
文件大小限制: 请确保上传文件的总体大小不超过5GB 权限设置: 建议根据业务需求设置适当的访问权限,默认为公开读取 输入流处理: 确保文件输入流在上传完成后及时关闭,以免占用资源
发布日期:2021-05-13 19:17:20
浏览次数:23
分类:精选文章
本文共 3343 字,大约阅读时间需要 11 分钟。
阿里云OSS文件上传功能开发指南
操作步骤
在开始开发之前,请确保已完成以下准备工作
创建存储空间
请通过阿里云运维界面创建一个OSS存储空间,获取以下信息:- 存储空间名称(Bucket Name): 用于存储文件的唯一标识
- 访问地址(Endpoint): 用于文件上传和访问的域名
- 身份认证信息:
- Access Key ID: 用于身份认证的账号ID
- Secret Access Key: 与Access Key ID对应的密钥
上传文件注意事项
- 文件大小限制: 单个文件上传大小不得超过5GB
- 文件格式: 支持的格式取决于具体业务需求
引入阿里云OSS开发工具包
添加阿里云OSS Java SDK依赖项至项目依赖管理中com.aliyun aliyun-sdk-oss 3.8.0
工具类开发指南
本节将介绍如何通过代码实现阿里云OSS文件上传功能
1. 工具类概述
@Slf4jpublic class AliOssUtils { // 请在实际应用中替换为您的实际配置信息 private static final String endpoint = "your-oss-endpoint"; private static final String accessKeyId = "your-access-key-id"; private static final String secretAccessKey = "your-secret-access-key"; private static final String bucketName = "your-bucket-name"; // 上传文件的默认存储路径 public static final String dirDefault = "default/"; // 业务相关的上传路径 public static final String dirBusiness = "business/"; // 上传文件接口 public static String upload(MultipartFile file) { return uploadOss(getFileName(file), getInputStream(file)); } // 上传文件到指定目录 public static String upload(String dir, MultipartFile file) { return uploadOss(dir + getFileName(file), getInputStream(file)); } // 上传文件到指定目录并指定文件名 public static String upload(String dir, String fileName, InputStream is) { return uploadOss(dir + fileName, is); } // 上传文件到OSS(核心上传逻辑) private static String uploadOss(String key, InputStream is) { try { OSS ossClient = new OSSClientBuilder() .withEndpoint(endpoint) .withAccessKeyId(accessKeyId) .withSecretAccessKey(secretAccessKey) .build(); // 上传文件 ossClient.putObject(bucketName, key, is); // 设置文件访问权限(默认为公开读取) ossClient.setObjectAcl( bucketName, key, CannedAccessControlList.PublicRead ); ossClient.shutdown(); return String.format( "https://%s.%s/%s", bucketName, endpoint, key ); } catch (Exception e) { log.error("uploadOss Exception", e); return null; } } // 获取文件输入流 private static InputStream getInputStream(MultipartFile file) { try { return file.getInputStream(); } catch (Exception e) { log.error("getInputStream Exception", e); throw new BusinessException("文件流获取失败"); } } // 生成文件名称 private static String getFileName(MultipartFile file) { String originalFilename = file.getOriginalFilename(); if (StringUtils.isNotBlank(originalFilename)) { return getFileName() + originalFilename.substring( originalFilename.lastIndexOf('.') ); } return getFileName(); } // 生成文件唯一标识符 private static String getFileName() { return UUID.randomUUID().toString().replace("-", "") + LocalDate.now().toString().replace("-", ""); }}
注意事项
通过以上代码实现,您可以轻松将文件上传至阿里云OSS存储空间,并获取文件的访问URL。
发表评论
最新留言
初次前来,多多关照!
[***.217.46.12]2025年04月28日 22时46分55秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
此主机支持Intel VT-x,但Intel VT-x 处于禁用状态。
2019-03-11
06-局部变量和全局变量
2019-03-11
12-面向对象1
2019-03-11
解决Vue源码运行错误
2019-03-11
HDU - 4109 Instrction Arrangement
2019-03-11
Lua websocket长连接
2019-03-11
SQL 分页查询 返回总条数
2019-03-11
重写的特点
2019-03-11
C语言_动态内存分配练习
2019-03-11
Linux学习_系统进程概念
2019-03-11
七层网络模型(待添加)
2019-03-11
考研复试——KY276 Problem C
2019-03-11
老鸟带你画tiled lines
2019-03-11
MybatisPlus自定义Sql实现多表查询
2019-03-12
Java位运算,负数的二进制表示形式,int类型最大值为什么是2的31次方-1
2019-03-12
PyQt5快速上手基础篇10-QSettings用法
2019-03-12
JQuery--手风琴,留言板
2019-03-12
MFC 自定义消息发送字符串
2019-03-12
goahead 下goaction测试与搭建
2019-03-12
Adding Powers
2019-03-12