阿里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(); }
