项目中上传文件一直都习惯用阿里云OSS,这次更改为七牛云,记录下接入。
首先要申请七牛云的账号及秘钥等。登录七牛云管理后台,配置获取如下内容:
1、新建空间
七牛云的是分华东、华北等存储区域的,选择区域和访问控制(私有的访问需密钥,根据业务需求选择)。
2、配置域名
域名配置可参考帮助。
3、获取密钥
在个人中心的密钥管理里获取AK和SK。
至此,七牛云接入的前期准备工作就已就绪了。接下来是java开发。
1、引入SDK
pom.xml添加七牛云的sdk依赖
<dependency>
<groupId>com.qiniu</groupId>
<artifactId>qiniu-java-sdk</artifactId>
<version>7.2.27</version>
</dependency>
2、配置七牛云参数
所需配置都是之前准备的,在application.yml中配置
*:
**:
***:
domain: 配置的域名
bucket: 新建的空间名
accessKey: 密钥AK
secretKey: 密钥SK
3、配置参数类
QiniuProperties,获取application.yml中的配置
@Data
@Component
@ConfigurationProperties(prefix = "*.**.***")
public class QiniuProperties {
/**
* 域名
*/
private String domain;
/**
* 存储空间名
*/
private String bucket;
/**
* AccessKey
*/
private String accessKey;
/**
* SecretKey
*/
private String secretKey;
}
4、注入bean
@Configuration
public class QiniuOSSConfig {
@Autowired
private QiniuProperties qiniuProperties;
/**
* 自动区域
*/
@Bean
public com.qiniu.storage.Configuration qiniuConfig() {
return new com.qiniu.storage.Configuration(Region.autoRegion());
}
/**
* 构建一个七牛上传工具实例
*/
@Bean
public UploadManager uploadManager() {
return new UploadManager(qiniuConfig());
}
/**
* 认证信息实例
*
* @return
*/
@Bean
public Auth auth() {
return Auth.create(qiniuProperties.getAccessKey(), qiniuProperties.getSecretKey());
}
/**
* 构建七牛空间管理实例
*/
@Bean
public BucketManager bucketManager() {
return new BucketManager(auth(), qiniuConfig());
}
}
这里注意,Region.autoRegion()是根据空间名自动适配七牛云区域,这里也可以手动设置。对应区域如下:
5、上传文件
到这里就已经差不多了,可以调用七牛云接口开始上传、删除等操作。上传操作如下:
@Autowired
private UploadManager uploadManager;
@Autowired
private Auth auth;
@Autowired
private QiniuProperties qiniuProperties;
private void uploadFile(byte[] data, String fileName) throws Exception {
try {
// 调用put方法上传
Response response = uploadManager.put(data, fileName, auth.uploadToken(qiniuProperties.getBucket()));
log.debug("七牛云文件上传:{}", response.bodyString());
} catch (QiniuException e) {
log.error("七牛云上传文件异常:{}", e.getMessage(), e);
}
}