阿里oss对象存储使用、阿里oss对象存储用法

阿里oss对象存储开通配置参照:https://blog..net/weixin_42257984/article/details/124684867 https://blog..net/weixin_52058417/article/details/126889085

阿里云开通oss对象存储

aliyun: # 阿里云的accessKeyId accessKeyId: 申请的accessKeyId # accessKey 密码 secretAccessKey: 申请的secretAccessKey oss: # Endpoint:在阿里云oss控制台查看自己使用的endpoint endPoint: xxxx.aliyuncs.com # bucket 名称 bucketName: bucket ------实体对象 @Component public class OssUtils {

@Value("${aliyun.accessKeyId}") private String accessKeyId;

@Value("${aliyun.secretAccessKey}") private String secretAccessKey;

@Value("${aliyun.oss.endPoint}") private String endPoint;

@Value("${aliyun.oss.bucketName}") private String bucketName; }

--------------带签名ossClient.generatePresignedUrl /** * 单个文件上传 * @param file * @return */ public String uploadOneFile(MultipartFile file) {

// 创建OSSClient实例。 OSS ossClient = new OSSClientBuilder().build(endPoint, accessKeyId, secretAccessKey); //设置文件名 String fileName = new DateTime().toString("yyyy/MM/dd") + UUID.randomUUID().toString().replace("-", "") + file.getOriginalFilename(); try { // 创建PutObject请求。 ossClient.putObject(bucketName, fileName, file.getInputStream()); Date expiration = new Date(System.currentTimeMillis() + 3600 * 1000); String url = ossClient.generatePresignedUrl(bucketName, fileName, expiration).toString(); System.out.println(url); return url; } catch (Exception e) { e.printStackTrace(); return null; } finally { if (ossClient != null) { ossClient.shutdown(); } } } ----------------- ossClient.deleteObject /** * 文件删除 * @param fileUrl * @return */ public boolean deleteFile(String fileUrl) {

// 创建OSSClient实例。 OSS ossClient = new OSSClientBuilder().build(endPoint, accessKeyId, secretAccessKey); int begin = ("http://" + bucketName + "." + endPoint + "/").length(); //找到文件路径的开始下标 String deleteUrl = fileUrl.substring(begin);

try { // 删除文件请求 ossClient.deleteObject(bucketName, deleteUrl); return true; } catch (Exception e) { e.printStackTrace(); return false; } finally { if (ossClient != null) { ossClient.shutdown(); } } } -----------------不带签名client.putObject() 返回:文件路径、文件名 ---实体对象 @Builder public class UploadResult {

/** * 文件路径 */ private String url;

/** * 文件名 */ private String filename; }

----调用 public void upload(MultipartFile file) { String originalfileName = file.getOriginalFilename(); String suffix = StringUtils.substring(originalfileName, originalfileName.lastIndexOf("."), originalfileName.length()); OssClient storage = OssFactory.instance(); UploadResult uploadResult; try { uploadResult = storage.uploadSuffix(file.getBytes(), suffix, file.getContentType()); } catch (IOException e) { throw new ServiceException(e.getMessage()); } }

public UploadResult uploadSuffix(byte[] data, String suffix, String contentType) { return upload(data, getPath(properties.getPrefix(), suffix), contentType); }

public UploadResult upload(byte[] data, String path, String contentType) { return upload(new ByteArrayInputStream(data), path, contentType); }

public UploadResult upload(InputStream inputStream, String path, String contentType) { try { ObjectMetadata metadata = new ObjectMetadata(); metadata.setContentType(contentType); metadata.setContentLength(inputStream.available()); client.putObject(new PutObjectRequest(properties.getBucketName(), path, inputStream, metadata)); } catch (Exception e) { throw new OssException("上传文件失败,请检查配置信息:[" + e.getMessage() + "]"); } return UploadResult.builder().url(getUrl() + "/" + path).filename(path).build(); }

经验分享 程序员 微信小程序 职场和发展