0
点赞
收藏
分享

微信扫一扫

oss对象存储 - 简单的文件上传

您好 2022-04-23 阅读 69

官网:如何使用流式上传和文件上传方式上传文件_对象存储 OSS-阿里云

准备工作

//InitializingBean:当项目已启动,spring接口,spring加载之后,执行接口一个方法
@Component
public class ConstantPropertiesUtils 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;

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

实现代码:

public String uploadFileAvatar(MultipartFile file) {
    // Endpoint以华东1(杭州)为例,其它Region请按实际情况填写。
    String endpoint = ConstantPropertiesUtils.END_POINT;
    // 阿里云账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM用户进行API访问或日常运维,请登录RAM控制台创建RAM用户。
    String accessKeyId = ConstantPropertiesUtils.KEY_ID;
    String accessKeySecret = ConstantPropertiesUtils.KEY_SECRET;
    // 填写Bucket名称,例如examplebucket。
    String bucketName = ConstantPropertiesUtils.BUCKET_NAME;
    //获取文件名
    String filename = file.getOriginalFilename();
    //在文件名称前面加随机唯一值
    String uuid = UUID.randomUUID().toString().replaceAll("-","");
    filename = uuid + filename;

    //获取当前日期,按日期分文件夹     joda-time引入包
    String datePath = new DateTime().toString("yyyy/MM/dd");
    filename = datePath + "/" + filename;


    // 创建OSSClient实例。
    OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
    String url = "";
    try {
        InputStream inputStream = file.getInputStream();
        // 创建PutObject请求。
        ossClient.putObject(bucketName, filename, inputStream);
        url = "https://" + bucketName + "." + endpoint + "/" + filename;
    } 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());
    } catch (Exception e) {
        e.printStackTrace();
    } finally {
        if (ossClient != null) {
            ossClient.shutdown();
        }
    }
    return url;
}
举报

相关推荐

0 条评论