阿里云OSS上传文件 工具类拿来直接用
发布日期: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. 工具类概述

    @Slf4j
    public 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("-", "");
    }
    }

    注意事项

  • 文件大小限制: 请确保上传文件的总体大小不超过5GB
  • 权限设置: 建议根据业务需求设置适当的访问权限,默认为公开读取
  • 输入流处理: 确保文件输入流在上传完成后及时关闭,以免占用资源
  • 通过以上代码实现,您可以轻松将文件上传至阿里云OSS存储空间,并获取文件的访问URL。

    上一篇:中台战略:中台建设与数字商业
    下一篇:数据库跨库join方案

    发表评论

    最新留言

    初次前来,多多关照!
    [***.217.46.12]2025年04月28日 22时46分55秒