阿里云OSS文件上传

添加依赖

复制代码
         <!--阿里云oss-->
        <dependency>
            <groupId>com.aliyun.oss</groupId>
            <artifactId>aliyun-sdk-oss</artifactId>
            <version>3.17.4</version>
        </dependency>
        <!--阿里云oss java9以上版本要添加以下JAXB依赖-->
        <dependency>
            <groupId>javax.xml.bind</groupId>
            <artifactId>jaxb-api</artifactId>
            <version>2.3.1</version>
        </dependency>
        <dependency>
            <groupId>javax.activation</groupId>
            <artifactId>activation</artifactId>
            <version>1.1.1</version>
        </dependency>
        <dependency>
            <groupId>org.glassfish.jaxb</groupId>
            <artifactId>jaxb-runtime</artifactId>
            <version>2.3.3</version>
        </dependency>

1、通过服务器上传

java 复制代码
// 创建OSSClient实例。
        ClientBuilderConfiguration clientBuilderConfiguration = new ClientBuilderConfiguration();
        // 设置签名版本为V4
        clientBuilderConfiguration.setSignatureVersion(SignVersion.V4);
        // 端点(例如 https://oss-cn-shenzhen.aliyuncs.com)    ACCESS_KEY      ACCESS_KEY_SECRET
        OSS ossClient = new OSSClientBuilder().build(AliConstant.ENDPOINT, AliConstant.ACCESS_KEY_ID, AliConstant.ACCESS_KEY_SECRET);


        try {

            // 创建PutObjectRequest对象。                            存储桶名称   文件名称全路径    文件字节数组
            PutObjectRequest putObjectRequest = new PutObjectRequest(bucketName, objectName, new ByteArrayInputStream(file.getBytes()));

            // 上传
            ossClient.putObject(putObjectRequest);
                
            //https://存储桶名称.oss-cn-shenzhen.aliyuncs.com/2025-03/e67a1e38-c83b-48f1-a17b-1db4225eae0c.jpg
            return AjaxResult.success("https://存储桶名称.oss-cn-shenzhen.aliyuncs.com/".concat(objectName));
        } catch (Exception oe) {
            throw new ServiceException("上传失败!");
        } finally {
            if (ossClient != null) {
                ossClient.shutdown();
            }
        }

2、通过前端直传

后端生成临时上传url,设置过期时间,即可实现前端直接上传,不用通过服务器中转

java 复制代码
     /**
     * 获取临时上传url
     */
    @Override
    public AjaxResult getTempPutUrl(String encodedTeam, String encodedMatchName) {
        if (!StringUtils.hasText(encodedTeam)){
            return AjaxResult.error("队伍为空");
        }
        if (!StringUtils.hasText(encodedMatchName)){
            return AjaxResult.error("比赛为空");
        }
        String team = URLDecoder.decode(encodedTeam, StandardCharsets.UTF_8);
        String matchName = URLDecoder.decode(encodedMatchName, StandardCharsets.UTF_8);
        String endpoint = AliConstant.ENDPOINT; // 替换为实际Endpoint
        String bucketName = AliConstant.BUCKET_NAME;
        String objectName = matchName.concat("/").concat(team).concat("/").concat(IdUtil.fastSimpleUUID()).concat(".png");

        CredentialsProvider credentialsProvider = new DefaultCredentialProvider(
                AliConstant.ACCESS_KEY_ID, AliConstant.ACCESS_KEY_SECRET);


        OSS ossClient = OSSClientBuilder.create()
                .endpoint(endpoint)
                .credentialsProvider(credentialsProvider)
                .build();

        try {
            // 设置URL过期时间:
            Date expiration = new Date(System.currentTimeMillis() + 10 * 1000L);
            GeneratePresignedUrlRequest request = new GeneratePresignedUrlRequest(
                    bucketName, objectName, HttpMethod.PUT);
            request.setExpiration(expiration);
            request.setProcess(null);
            request.setContentType("image/png"); // 可选:指定上传时的 Content-Type
            return AjaxResult.success(ossClient.generatePresignedUrl(request));
        } catch (Exception e) {
            e.printStackTrace();
            throw new GlobalException("获取上传STS失败");
        } finally {
            ossClient.shutdown();
        }

    }
相关推荐
图码1 小时前
如何用多种方法判断字符串是否为回文?
开发语言·数据结构·c++·算法·阿里云·线性回归·数字雕刻
2601_958320578 小时前
【零基础新手入门 】OpenClaw 2.6.6 对接阿里云百炼配置教程(包含安装包)
人工智能·阿里云·云计算·open claw·小龙虾·open claw安装·open claw一键安装
OpenClawCSDN20 小时前
2026年怎么集成Hermes Agent/OpenClaw?阿里云搭建及token Plan配置攻略
阿里云·云计算
OpenClawCSDN1 天前
2026年5月阿里云怎么搭建OpenClaw/Hermes Agent?百炼token Plan配置详解教程
阿里云·云计算
OpenClawCSDN1 天前
2026年5月阿里云OpenClaw/Hermes Agent集成攻略+百炼token Plan配置全览教程
阿里云·云计算
TG_yunshuguoji2 天前
阿里云代理商:DeepSeek V4 vs GPT 系列 阿里云上的成本与性能新平衡
人工智能·阿里云·云计算·ai智能体·deepseek v4
**蓝桉**2 天前
阿里云存储服务
阿里云·云计算
m0_631653312 天前
阿里云单机双网终极部署与运维白皮书:Nginx + PM2 + Prisma 踩坑实战
运维·nginx·阿里云·部署
小白考证进阶中2 天前
阿里云云计算工程师ACA认证(2026新版)已上线
运维·阿里云·云计算·阿里云认证·阿里云aca云计算·考试通知·阿里云aca考试
小贺儿开发3 天前
Unity3D 智能云端数字标牌系统
unity·阿里云·人机交互·视频·oss·广告·互动