package com.dobbinsoft.fw.support.storage; import com.aliyun.oss.OSSClient; import com.aliyun.oss.common.comm.ResponseMessage; import com.aliyun.oss.model.ObjectMetadata; import com.aliyun.oss.model.PutObjectRequest; import com.aliyun.oss.model.PutObjectResult; import com.dobbinsoft.fw.support.properties.FwObjectStorageProperties; import org.springframework.beans.factory.InitializingBean; import org.springframework.beans.factory.annotation.Autowired; /** * ClassName: AliStorageClient * Description: 阿里云对象存储实现 * * @author: e-weichaozheng * @date: 2021-03-17 */ public class AliStorageClient implements StorageClient, InitializingBean { @Autowired private FwObjectStorageProperties properties; private OSSClient ossClient; @Override public void afterPropertiesSet() throws Exception { ossClient = new OSSClient(properties.getAliEndpoint(), properties.getAliAccessKeyId(), properties.getAliAccessKeySecret()); } @Override public StorageResult save(StorageRequest request) { ObjectMetadata objectMetadata = new ObjectMetadata(); objectMetadata.setContentLength(request.getSize()); objectMetadata.setContentType(request.getContentType()); PutObjectRequest putObjectRequest = new PutObjectRequest( properties.getAliBucket(), request.getPath() + "/" + request.getFilename(), request.getIs(), objectMetadata); putObjectRequest.setProcess(""); PutObjectResult putObjectResult = ossClient.putObject(putObjectRequest); ResponseMessage response = putObjectResult.getResponse(); StorageResult result = new StorageResult(); int statusCode = response.getStatusCode(); result.setSuc(statusCode == 200); if (result.isSuc()) { result.setUrl(properties.getAliBaseUrl() + request.getPath() + "/" + request.getFilename()); } return result; } @Override public StoragePrivateResult savePrivate(StorageRequest request) { throw new RuntimeException("不支持私有保存"); } @Override public boolean delete(String url) { int index = url.indexOf("/", 5); String key = url.substring(index); ossClient.deleteObject(properties.getAliBucket(), key); return true; } @Override public boolean deletePrivate(String key) { throw new RuntimeException("不支持私有保存"); } @Override public String getPrivateUrl(String key, Integer expireSec) { throw new RuntimeException("不支持私有保存"); } @Override public String getKeyFormUrl(String url) { throw new RuntimeException("不支持私有保存"); } }