Java使用OSS实现存储服务

一、什么是对象存储OSS(注:官方解释)

详情请参考:OSS官网

对象存储OSS(Object Storage Service)是一款海量、安全、低成本、高可靠的云存储服务,可提供99.9999999999%(12个9)的数据持久性,99.995%的数据可用性。多种存储类型供选择,全面优化存储成本

OSS具有与平台无关的RESTful API接口,您可以在任何应用、任何时间、任何地点存储和访问任意类型的数据。

您可以使用阿里云提供的API、SDK接口或者OSS迁移工具轻松地将海量数据移入或移出阿里云OSS。数据存储到阿里云OSS以后,您可以选择标准存储(Standard)作为移动应用、大型网站、图片分享或热点音视频的主要存储方式,也可以选择成本更低、存储期限更长的低频访问存储(Infrequent Access)、归档存储(Archive)、冷归档存储(Cold Archive)作为不经常访问数据的存储方式。

计费方式

按量付费:所有计费项默认采用按量付费。按照各计费项的实际用量结算费用,先使用,后付费,适用于业务用量经常有变化的场景。更多信息,请参见按量付费。
资源包:针对部分常用计费项支持专用的资源包。预先购买针对不同的计费项推出的优惠资源包,在费用结算时,优先从资源包抵扣用量,先购买,后抵扣,适用于业务用量相对稳定的场景。更多信息,请参见资源包概述。
存储容量单位包SCU:针对存储费用支持SCU。SCU除了用于抵扣OSS的存储费用,还可用于抵扣多种云存储产品存储容量费用。更多信息,请参见存储容量单位包SCU。

二、图片上传至OSS存储服务

1.开通OSS服务
插入图片描述
2.管理OSS
在这里插入图片描述
3.创建Bucket用于存储图片
在这里插入图片描述
在这里插入图片描述
4.获取Access Key
在这里插入图片描述
在这里插入图片描述
5. Java实现图片上传
pom文件引入依赖

<dependency>
	<groupId>com.aliyun.oss</groupId>
	<artifactId>aliyun-sdk-oss</artifactId>
	<version>version</version>
</dependency>

yml文件

server:
  port: 7150
#spring
spring:
  profiles:
    active: prod
  application:
    name: oss
  servlet:
    multipart:
      max-file-size: 10MB
      max-request-size: 100MB
aliyun:
  oss:
    endpoint: 阿里云获取
    key-id: 阿里云获取
    key-secret: 阿里云获取
    bucket-name: 创建的Bucket

OssProperties

@Data
@Component
@ConfigurationProperties(prefix = "aliyun.oss")
public class OssProperties implements InitializingBean{

    private String endpoint;

    private String keyId;

    private String keySecret;

    private String bucketName;

    public static String ENDPOINT;
    
    public static String KEY_ID;
    
    public static String KEY_SECRET;
    
    public static String BUCKET_NAME;

    @Override
    public void afterPropertiesSet() throws Exception {
        ENDPOINT = endpoint;
        KEY_ID = keyId;
        KEY_SECRET = keySecret;
        BUCKET_NAME = bucketName;
    }
}

FileService

public interface FileService {

    /**
     * OSS图片上传
     * @param inputStream 文件流
     * @param module 单元
     * @param fileName 文件名称
     * @return
     */
    String uploadALiYunOSS(InputStream inputStream, String module, String fileName);
}

FileServiceImpl

@Service
public class FileServiceImpl implements FileService {
    
    @Override
    public String uploadALiYunOSS(InputStream inputStream, String module, String fileName) {
        OSS ossClient = new OSSClientBuilder().build(OssProperties.ENDPOINT, OssProperties.KEY_ID, OssProperties.KEY_SECRET);
        if (!ossClient.doesBucketExist(OssProperties.BUCKET_NAME)) {
            ossClient.createBucket(OssProperties.BUCKET_NAME);
            ossClient.setBucketAcl(OssProperties.BUCKET_NAME, CannedAccessControlList.PublicRead);
        }
        String dateTime = new DateTime().toString("/yyyy/MM/dd/");
        fileName = UUID.randomUUID().toString() + fileName.substring(fileName.lastIndexOf("."));
        String file = module + dateTime + fileName;
        ossClient.putObject(OssProperties.BUCKET_NAME, file, inputStream);
        ossClient.shutdown();
        return "https://" + OssProperties.BUCKET_NAME + "." + OssProperties.ENDPOINT + "/" + file;
    }
}

FileController

@RestController
@CrossOrigin
@RequestMapping("/v1/oss/test_oss")
public class FileController {
    
    @Resource
    private FileService fileService;

    @PostMapping("/upload")
    public Result uploadALiYunOSS(@RequestParam("file") MultipartFile multipartFile, @RequestParam("module") String module) {
        try {
            InputStream inputStream = multipartFile.getInputStream();
            String originalFilename = multipartFile.getOriginalFilename();
            String routh = fileService.uploadALiYunOSS(inputStream, module, originalFilename);
            return Result.ok().message("文件上传成功").data("url", routh);
        } catch (Exception e) {
            throw new BusinessException(ResponseEnum.UPLOAD_ERROR, e);
        }
    }
}
  1. 测试
    在这里插入图片描述
    在这里插入图片描述
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,以下是 Java 代码示例,您可以参考以下步骤实现视频上传: 1. 首先,您需要在腾讯云控制台中创建一个对象存储桶(Bucket),并获取您的访问密钥(SecretId 和 SecretKey)。 2. 在您的 Java 项目中引入腾讯云 COS SDK,您可以在 Maven 中添加以下依赖项: ```xml <dependency> <groupId>com.qcloud</groupId> <artifactId>cos_api</artifactId> <version>5.6.10</version> </dependency> ``` 3. 创建 COS 客户端对象: ```java import com.qcloud.cos.COSClient; import com.qcloud.cos.ClientConfig; import com.qcloud.cos.auth.BasicCOSCredentials; import com.qcloud.cos.auth.COSCredentials; import com.qcloud.cos.region.Region; COSCredentials cred = new BasicCOSCredentials("your_secret_id", "your_secret_key"); ClientConfig clientConfig = new ClientConfig(new Region("your_bucket_region")); COSClient cosClient = new COSClient(cred, clientConfig); ``` 4. 使用 putObject 接口上传视频文件: ```java import com.qcloud.cos.model.PutObjectRequest; import com.qcloud.cos.model.PutObjectResult; PutObjectRequest putObjectRequest = new PutObjectRequest("your_bucket_name", "your_video_file.mp4", new File("your_video_file.mp4")); PutObjectResult putObjectResult = cosClient.putObject(putObjectRequest); ``` 以上代码示例中,您需要替换为您的存储桶名称、访问密钥、区域和视频文件路径。 希望以上代码示例可以帮助您实现视频上传。如果您有任何问题,欢迎随时向我提问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值