SpringBoot + 阿里云OSS文件上传服务

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/EndTheme_Xin/article/details/83070342

分享一个关于文件上传服务的项目

pom.xml文件需要添加的依赖

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

application.yml文件关于OSS的配置

ali-oss:
  endpoint: #查看你的bucketname的endpoint地址,如:http://oss-cn-shenzhen.aliyuncs.com
  bucketName: #你的bucketName
  picLocation: #你的picLocation
  accessKeyId: #你的accessKeyId
  accessKeySecret: #你的accessKeySecret

OSS配置类

import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;

@ConfigurationProperties(prefix="ali-oss")
@Component
public class ALiOSSConfig {
    private String endpoint;
    private String bucketName;
    private String picLocation;
    private String accessKeyId;
    private String accessKeySecret;

    public String getEndpoint() {
        return endpoint;
    }

    public void setEndpoint(String endpoint) {
        this.endpoint = endpoint;
    }

    public String getBucketName() {
        return bucketName;
    }

    public void setBucketName(String bucketName) {
        this.bucketName = bucketName;
    }

    public String getPicLocation() {
        return picLocation;
    }

    public void setPicLocation(String picLocation) {
        this.picLocation = picLocation;
    }

    public String getAccessKeyId() {
        return accessKeyId;
    }

    public void setAccessKeyId(String accessKeyId) {
        this.accessKeyId = accessKeyId;
    }

    public String getAccessKeySecret() {
        return accessKeySecret;
    }

    public void setAccessKeySecret(String accessKeySecret) {
        this.accessKeySecret = accessKeySecret;
    }
}

OSS上传核心代码

其中,上传时putObject方法根据bucket是公有还是私有的上传方式有所区分

/*
* 实现ali oss文件上传
*/
ossClient = new OSSClient(ossConfig.getEndpoint(), ossConfig.getAccessKeyId(), ossConfig.getAccessKeySecret());

InputStream input = file.getInputStream();
ObjectMetadata meta = new ObjectMetadata();                // 创建上传Object的Metadata
meta.setContentType(type.getContentType());        // 设置上传内容类型
meta.setCacheControl("no-cache");                    // 被下载时网页的缓存行为

// 以yyyy-M-d的格式获得当前日期,用于上传文件夹区分日期
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-M-d");
FileId fileId = FileIdFactory.Generate(sourceId, type.getValue());

// filePath根据业务需求拼接                
String filePath = ossConfig.getPicLocation() + simpleDateFormat.format(new Date()) + "/" + fileId.getFileId() + type.getFileSuffix();
PutObjectRequest putObjectRequest = new PutObjectRequest(ossConfig.getBucketName(), filePath, input, meta);            //创建上传请求
ossClient.putObject(putObjectRequest);

// 私有加密url
//Date expiration = new Date(new Date().getTime() + 3600 * 1000);
//String url = ossClient.putObject(file, fileType, config.getPicLocation() + fileName + "." + fileType);

// 公有url
String url = ossConfig.getEndpoint().replaceFirst("http://", "http://" + ossConfig.getBucketName() + ".") + "/" + filePath;

猜你喜欢

转载自blog.csdn.net/EndTheme_Xin/article/details/83070342