使用阿里云oss存储对象存放视频和图片

记录的初心:我刚刚开始的时候是不知道这个上传图片的也可以上传视频。使用我一直使用的阿里云的视频点播产品。今天晚上试了一下可以也是可以使用图片上传的方法上传视频。

具体代码:

/**
 * 常量类,读取配置文件application.properties中的配置
 */
@Component
public class ConstantPropertiesUtil implements InitializingBean {
    @Value("${aliyun.oss.file.endpoint}")
    private String endpoint;
    @Value("${aliyun.oss.file.keyid}")
    private String keyId;
    @Value("${aliyun.oss.file.keysecret}")
    private String keySecret;
    @Value("${aliyun.oss.file.bucketname}")
    private String bucketName;

    public static String END_POINT;
    public static String KEY_ID;
    public static String KEY_SECRET;
    public static String BUCKET_NAME;

    /**
     * 此方法时spring提供的初始化的方法,实现该方法,
     *
     * @throws Exception
     */
    @Override
    public void afterPropertiesSet() throws Exception {
        END_POINT = endpoint;
        KEY_ID = keyId;
        KEY_SECRET = keySecret;
        BUCKET_NAME = bucketName;
    }
}

    //图片上传
    @Override
    public String upload(MultipartFile file) {
        //获取阿里云存储相关常量
        String endPoint = ConstantPropertiesUtil.END_POINT;
        String accessKeyId = ConstantPropertiesUtil.KEY_ID;
        String accessKeySecret = ConstantPropertiesUtil.KEY_SECRET;
        String bucketName = ConstantPropertiesUtil.BUCKET_NAME;
        String url = "";
        try {
            OSS ossClient = new OSSClientBuilder().build(endPoint, accessKeyId, accessKeySecret);
            if (!ossClient.doesBucketExist(bucketName)) {
                //创建bucket
                ossClient.createBucket(bucketName);
                //设置oss实例的访问权限:公共读
                ossClient.setBucketAcl(bucketName, CannedAccessControlList.PublicRead);
            }
            //获取上传文件流
            InputStream inputStream = file.getInputStream();
            //构建日期路径:avatar/2020/06/14/文件名
           // String filePath = new DateTime().toString("yyyy/MM/dd");
             String filePath = "zsb/my/image/headImage/";
            //文件名:uuid.扩展名  为了每个文件上传之后,不会被覆盖掉
            String fileName = file.getOriginalFilename();
            String uuid = UUID.randomUUID().toString().replaceAll("-", "");
            //最终的格式回按照时间的不同来创建文件夹
            fileName = filePath + uuid + fileName;
            //文件上传至阿里云
            ossClient.putObject(bucketName, fileName, inputStream);
            ossClient.shutdown();
            url = "http://" + bucketName + "." + endPoint + "/" + fileName;
            return url;
        } catch (Exception e) {
            e.getMessage();
        }
        return null;
    }

配置文件: application.properties

aliyun.oss.file.endpoint=oss-cn-hangzhou.aliyuncs.com
aliyun.oss.file.keyid=xxxxxx
aliyun.oss.file.keysecret=xxxxxx
aliyun.oss.file.bucketname=edu-hop
# 最大上传单个文件大小:默认1Mxxx
spring.servlet.multipart.max-file-size=1024MB
# 最大置总上传的数据大小 :默认10M
spring.servlet.multipart.max-request-size=1024MB

 

你可能感兴趣的:(java,java)