阿里云oss上传下载接口(上传接口和下载接口都是临时的)

下载传接口:objectName与fileUrl一样

 public String download(String objectName) {
        String endpoint = ossProperties.getEndPoint();
        String accessKeyId = ossProperties.getAccessKeyId();
        String accessKeySecret = ossProperties.getAccessKeySecret();
        String bucketName = ossProperties.getBucketName();
        // 从STS服务获取临时访问凭证后,您可以通过临时访问密钥和安全令牌生成OSSClient(既这里的accessKeyId和accessKeySecret为STS服务返回的)。
        // 使用STS创建OSSClient实例。
        OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
        // 设置请求头。
        Map<String, String> headers = new HashMap<String, String>();
        // 设置用户自定义元信息。
        Map<String, String> userMetadata = new HashMap<String, String>();

        URL signedUrl = null;
        try {
            // 指定生成的签名URL过期时间,单位为毫秒。
            Date expiration = new Date(new Date().getTime() + 3600 * 1000);

            // 生成签名URL。
            GeneratePresignedUrlRequest request = new GeneratePresignedUrlRequest(bucketName, objectName, HttpMethod.GET);
            // 设置过期时间。
            request.setExpiration(expiration);

            // 将请求头加入到request中。
            request.setHeaders(headers);
            // 添加用户自定义元信息。
            request.setUserMetadata(userMetadata);
            // 通过HTTP GET请求生成签名URL。
            signedUrl = ossClient.generatePresignedUrl(request);
            // 打印签名URL。
            System.out.println("signed url for putObject: " + signedUrl);
        } catch (OSSException oe) {
            System.out.println("Caught an OSSException, which means your request made it to OSS, "
                    + "but was rejected with an error response for some reason.");
            System.out.println("Error Message:" + oe.getErrorMessage());
            System.out.println("Error Code:" + oe.getErrorCode());
            System.out.println("Request ID:" + oe.getRequestId());
            System.out.println("Host ID:" + oe.getHostId());
        } catch (ClientException ce) {
            System.out.println("Caught an ClientException, which means the client encountered "
                    + "a serious internal problem while trying to communicate with OSS, "
                    + "such as not being able to access the network.");
            System.out.println("Error Message:" + ce.getMessage());
        }
        assert signedUrl != null;
        return signedUrl.toString();
        // 通过签名URL下载文件,以HttpClients为例说明。
//        getObjectWithHttp(signedUrl, pathName, headers, userMetadata);
    }

上传接口

//简单的文件上传测试
    //文件上传接口需要的参数是被上传文件的本地绝对地址
    //文件上传返回值应该是在bucket中的位置信息。
    public String upload(MultipartFile multipartFile, String fileUrl) {
        String endpoint = ossProperties.getEndPoint();
        String accessKeyId = ossProperties.getAccessKeyId();
        String accessKeySecret = ossProperties.getAccessKeySecret();
        String bucketName = ossProperties.getBucketName();
        String fileName = multipartFile.getOriginalFilename();
        //创建OSSClient实例
        OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);

        try {
            //容器不存在,就创建,权限为私有的
            if (!ossClient.doesBucketExist(bucketName)) {
                ossClient.createBucket(bucketName);
                CreateBucketRequest createBucketRequest = new CreateBucketRequest(bucketName);
                createBucketRequest.setCannedACL(CannedAccessControlList.Private);
                ossClient.createBucket(createBucketRequest);
            }
            //上传时设置存储类型和访问权限
            ObjectMetadata objectMetadata = new ObjectMetadata();
            String type = getContentType(fileName.substring(fileName.lastIndexOf('.')));
//            String fileUrl = "";
            objectMetadata.setContentType(type);
            objectMetadata.setObjectAcl(CannedAccessControlList.Default);
            //上传文件,附带有桶、文件地址、文件、文件存储属性,
            PutObjectResult result = ossClient.putObject(new PutObjectRequest(bucketName, fileUrl, multipartFile.getInputStream(), objectMetadata));
            System.out.println(result.toString());
            if (result != null) {
                System.out.println(("==========>OSS文件上传成功,OSS地址:" + fileUrl));
            }
        } catch (OSSException oe) {
            System.out.println("Caught an OSSException, which means your request made it to OSS, "
                    + "but was rejected with an error response for some reason.");
            System.out.println("Error Message:" + oe.getErrorMessage());
            System.out.println("Error Code:" + oe.getErrorCode());
            System.out.println("Request ID:" + oe.getRequestId());
            System.out.println("Host ID:" + oe.getHostId());
        } catch (Exception e) {
            throw new RuntimeException(e);

        } finally {
            if (ossClient != null) {
                ossClient.shutdown();
            }
        }
        return fileUrl;
    }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
阿里云OSS(对象存储服务)提供了丰富的API和工具,可以方便地实现文件的上下载功能。根据提供的引用内容,以下是基于阿里云OSS实现文件上下载的步骤: 1. 配置OSS服务:在阿里云官网上购买OSS服务,并完成相应的配置。\[1\] 2. 创建Controller层:在Controller层中,使用@RestController注解标记类,并使用@PostMapping注解标记上文件的接口。在接口方法中,使用@ApiOperation注解添加接口的描述信息,使用@ApiImplicitParam注解指定接口参数。\[2\] 3. 实现上功能:在Service层中,创建实现上功能的服务类。在该类中,注入OSSUtils工具类,并实现上文件的方法。在方法中,首先对文件类型进行检查,然后调用工具类的上文件方法。\[3\] 4. 实现下载功能:类似地,在Service层中创建实现下载功能的服务类。在该类中,注入OSSUtils工具类,并实现下载文件的方法。在方法中,调用工具类的下载文件方法。 需要注意的是,上下载文件时,需要使用阿里云OSS提供的SDK或API进行操作。具体的实现步骤可以参考阿里云的文档,其中包括SDK的引入、配置OSS客户端、创建Bucket等详细步骤。 总结起来,基于阿里云OSS实现文件上下载的步骤包括:配置OSS服务、创建Controller层、实现上功能和下载功能,并使用阿里云OSS提供的SDK或API进行操作。 #### 引用[.reference_title] - *1* *2* *3* [在项目中使用阿里云oss实现文件上功能](https://blog.csdn.net/m0_63445035/article/details/130417961)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值