package com.central.file.config; import com.central.file.model.FileInfo; import com.central.file.properties.FileServerProperties; import com.central.file.service.impl.AbstractIFileService; import com.qiniu.common.QiniuException; import com.qiniu.http.Response; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import com.qiniu.common.Zone; import com.qiniu.storage.BucketManager; import com.qiniu.storage.UploadManager; import com.qiniu.util.Auth; import org.springframework.stereotype.Service; import org.springframework.web.multipart.MultipartFile; /** * 七牛云配置 * * @author 作者 owen E-mail: 624191343@qq.com */ @Configuration @ConditionalOnProperty(name = "zlt.file-server.type", havingValue = "qiniu") public class QiniuOSSAutoConfigure { @Autowired private FileServerProperties fileProperties; /** * 华东机房 */ @Bean public com.qiniu.storage.Configuration qiniuConfig() { return new com.qiniu.storage.Configuration(Zone.zone2()); } /** * 构建一个七牛上传工具实例 */ @Bean public UploadManager uploadManager() { return new UploadManager(qiniuConfig()); } /** * 认证信息实例 * * @return */ @Bean public Auth auth() { return Auth.create(fileProperties.getOss().getAccessKey(), fileProperties.getOss().getAccessKeySecret()); } /** * 构建七牛空间管理实例 */ @Bean public BucketManager bucketManager() { return new BucketManager(auth(), qiniuConfig()); } @Service public class QiniuOssServiceImpl extends AbstractIFileService { @Autowired private UploadManager uploadManager; @Autowired private BucketManager bucketManager; @Autowired private Auth auth; @Override protected String fileType() { return fileProperties.getType(); } @Override protected void uploadFile(MultipartFile file, FileInfo fileInfo) throws Exception { // 调用put方法上传 uploadManager.put(file.getBytes(), fileInfo.getName(), auth.uploadToken(fileProperties.getOss().getBucketName())); fileInfo.setUrl(fileProperties.getOss().getEndpoint() + "/" + fileInfo.getName()); fileInfo.setPath(fileProperties.getOss().getEndpoint() + "/" + fileInfo.getName()); } @Override protected boolean deleteFile(FileInfo fileInfo) { try { Response response = bucketManager.delete(fileProperties.getOss().getBucketName(), fileInfo.getPath()); int retry = 0; while (response.needRetry() && retry++ < 3) { response = bucketManager.delete(fileProperties.getOss().getBucketName(), fileInfo.getPath()); } } catch (QiniuException e) { return false; } return true; } } }