当前位置: 首页 > news >正文

✅阿里云-对象存储OSS-配置和使用(Java)

OSS对象存储服务的创建和集成使用

在写项目的时候,使用到了上传文件的一些功能,通过该方式可以提高文件的访问速率。也可以就将文件存储到数据库。这里只是做一个记录。

1. OSS 服务配置
1.1 创建 Bucket
  1. 登录阿里云控制台,进入 OSS 管理界面
  2. 点击"创建 Bucket"
  3. 配置说明:
    • Bucket 名称:air-test1
    • 地域:选择杭州(oss-cn-hangzhou)
    • 存储类型:标准存储
    • 读写权限:公共读(如果不想设置公共读,需要使用签名URL)
    • 版本控制:可选
    • 服务端加密:可选

1.2 创建后设置

关闭阻止公共访问

读写权限:公共读

1.3 访问密钥配置
  1. 在阿里云控制台获取 AccessKey:
    • AccessKey ID
    • AccessKey Secret
  1. 出于安全考虑,建议:
    • 使用 RAM 用户创建 AccessKey
    • 只授予必要的 OSS 权限
    • 定期轮换 AccessKey

创建RAM用户并授予对应的权限

  1. 进入用户管理控制台
  2. 创建用户,输入对应的名称就可以了(需要验证)

  1. 点击创建的用户,创建AccessKey(记住创建的AccessKey ID和AccessKey Secret)

1.4 项目配置
  • OSS地域和访问域名
  • 配置系统变量ALIBABA_AIR_TEST1_ACCESSKEY_IDALIBABA_AIR_TEST1_ACCESSKEY_SECRET(对应的值就设置成上面的AccessKey ID和AccessKey Secret)

application.yml 中配置 OSS 参数:

aliyun:oss:endpoint: oss-cn-hangzhou.aliyuncs.comaccessKeyId: ${ALIBABA_AIR_TEST1_ACCESSKEY_ID}accessKeySecret: ${ALIBABA_AIR_TEST1_ACCESSKEY_SECRET}bucketName: air-test1urlPrefix: https://air-test1.oss-cn-hangzhou.aliyuncs.com/

环境变量配置:

export ALIBABA_AIR_TEST1_ACCESSKEY_ID=your_access_key_id
export ALIBABA_AIR_TEST1_ACCESSKEY_SECRET=your_access_key_secret

2. 代码实现
xml依赖
		<!-- 阿里云OSS --><dependency><groupId>com.aliyun.oss</groupId><artifactId>aliyun-sdk-oss</artifactId><version>3.15.1</version></dependency>
2.1 OSS 配置类
@Configuration
public class OSSConfig {@Value("${aliyun.oss.endpoint}")private String endpoint;@Value("${aliyun.oss.accessKeyId}")private String accessKeyId;@Value("${aliyun.oss.accessKeySecret}")private String accessKeySecret;@Value("${aliyun.oss.bucketName}")private String bucketName;@Beanpublic OSS ossClient() {return new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);}
}
2.2 OSS 工具类
@Component
public class AliOSSUtils {@Value("${aliyun.oss.endpoint}")private String endpoint;@Value("${aliyun.oss.accessKeyId}")private String accessKeyId;@Value("${aliyun.oss.accessKeySecret}")private String accessKeySecret;@Value("${aliyun.oss.bucketName}")private String bucketName;/*** 上传文件到OSS* @param file 要上传的文件* @param directory 存储的目录(可选,如:avatars/)* @return 文件访问URL*/public String uploadFile(MultipartFile file, String directory) throws IOException {// 获取上传的文件的输入流InputStream inputStream = file.getInputStream();// 生成唯一文件名String originalFilename = file.getOriginalFilename();String extension = originalFilename.substring(originalFilename.lastIndexOf("."));String fileName = (directory != null ? directory : "") + UUID.randomUUID().toString() + extension;// 创建OSSClient实例OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);try {// 上传文件到OSSossClient.putObject(bucketName, fileName, inputStream);// 构建文件访问路径return "https://" + bucketName + "." + endpoint + "/" + fileName;} finally {// 关闭OSSClientif (ossClient != null) {ossClient.shutdown();}// 关闭输入流if (inputStream != null) {inputStream.close();}}}/*** 上传图片到OSS(简化方法,不指定目录)*/public String uploadImage(MultipartFile file) throws IOException {return uploadFile(file, "images/");}/*** 上传头像到OSS*/public String uploadAvatar(MultipartFile file) throws IOException {return uploadFile(file, "avatars/");}
} 
3. 使用说明
3.1 代码使用示例

上传头像:

@Autowired
private AliOSSUtils aliOSSUtils;public String uploadAvatar(MultipartFile file) {try {return aliOSSUtils.uploadAvatar(file);} catch (IOException e) {throw new RuntimeException("上传头像失败", e);}
}
4. 安全建议
1. 访问控制
    • 建议使用 RAM 用户管理 OSS 访问权限
    • 定期轮换 AccessKey
    • 使用临时访问凭证(STS)进行移动端上传
2. 数据安全
    • 开启服务端加密
    • 配置防盗链
    • 配置 CORS(跨域)规则

3. 文件管理
    • 使用规范的目录结构
    • 定期清理无用文件
    • 设置文件生命周期规则
5. 常见问题
5.1 上传失败
1.检查配置
    • endpoint 是否正确
    • AccessKey 是否有效
    • Bucket 名称是否正确
2.常见错误码
    • InvalidAccessKeyId:AccessKey 无效
    • SignatureDoesNotMatch:签名错误
    • NoSuchBucket:Bucket 不存在
    • AccessDenied:没有访问权限
5.2 访问权限问题
1.Bucket 级别权限
    • 私有:需要签名URL访问
    • 公共读:可直接访问
    • 公共读写:不建议使用
2.文件级别权限
    • 可以覆盖 Bucket 级别权限
    • 建议使用 Bucket 权限,避免文件级别权限设置
5.3 性能优化
1.客户端优化
    • 使用断点续传
    • 开启压缩
    • 图片处理服务
2.服务端优化
    • 使用临时凭证
    • 资源复用
    • 异步处理
6. 监控和维护
监控指标
    • 存储用量
    • 请求次数
    • 流量统计
    • 返回码分布
成本控制
    • 设置用量警告
    • 配置生命周期规则
    • 选择合适的存储类型
日常维护
    • 检查访问日志
    • 更新 AccessKey
    • 清理过期文件
    • 优化存储结构
7. 参考文档
  • 阿里云 OSS 开发指南
  • OSS SDK 参考
  • OSS 最佳实践

http://www.dtcms.com/a/442879.html

相关文章:

  • Go语言入门(19)-指针(下)
  • 做国际网站有补贴吗国家企业公示信息系统全国
  • 生物化学Learning Track(13)核酸的性质和研究方法
  • 如何建个使用自己帐户的网站报关做业务可以上哪些网站
  • 游戏币交易平台代理东莞网站优化方法
  • 怎样优化手机网站wordpress oyester
  • phpcms v9网站搬站之后掉出来的文章链接显示为以前网站域名一个人如何注册公司
  • 软件系统核心关系全解析:除聚合外的 6 大关键类型与应用场景
  • 在哪请人做网站国内免费crm系统
  • 龙华做网站公司新网站如何做seo
  • Ubuntu 14.04更换阿里云源,设置系统字体
  • 什么网站广告做多水果网站怎么做
  • 火车票网站建设海口模板建站哪家好
  • int最大值2的次幂
  • 6.3 排序、RMQ
  • 合肥做微网站建设做网站和做程序一样吗
  • 【OpenCV】图像处理实战:边界填充与阈值详解
  • 泉州网站排名哈尔滨seo优化大家
  • Upgrade Win11 subsystem Ubuntu22.04 to ubuntu24.04
  • Ubuntu 24.04 LTS 发行说明
  • 做网站需要网站负责人网站企业模板
  • 《构建可靠 Python 项目:测试金字塔的实践指南与工具解析》
  • 做医药商城网站的公司网站开发角色分配权限
  • 旅游网站建设的建议信阳网站设计
  • 技术驱动增长:赋能您的电竞体育平台快速启航与商业成功
  • 网站页面设计价格网站做网站
  • Unity游戏基础-5(一些细节)
  • 浙江建设厅网站做门户网站难吗
  • 【MySQL|第二篇】基础篇下
  • 电子商务网站规划的原则视差设计网站