前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >文件访问路径规则 BucketName.Endpoint/ObjectName

文件访问路径规则 BucketName.Endpoint/ObjectName

原创
作者头像
用户7737280
发布2024-08-24 13:07:17
1270
发布2024-08-24 13:07:17

/**

* 配置类,用于创建AliOssUtil对象

*/

@Configuration

@Slf4j

public class OssConfiguration {

@Bean

@ConditionalOnMissingBean//保证spring容器只有一个AliOssUtil对象

public AliOssUtil aliOssUtil(AliOssProperties aliOssProperties ){//将aliOssProperties 中的属性赋给AliOssUtil对象

log.info("开始创建阿里云文件上传工具类对象:{}",aliOssProperties);

return new AliOssUtil(aliOssProperties.getEndpoint()

,aliOssProperties.getAccessKeyId()

,aliOssProperties.getAccessKeySecret()

,aliOssProperties.getBucketName());

}

@PostMapping("/upload")

@ApiOperation("文件上传")

public Result<String> upload(MultipartFile file){// file 这里的参数名必须和前端提交的参数名保持一致

log.info("文件上传:{}",file);

try {

//原始文件名

String originalFilename = file.getOriginalFilename();

//截取原始文件名的后缀

String extension = www.laipuhuo.com.originalFilename.substring(originalFilename.lastIndexOf("."));

//构造新文件名称

String objectName = UUID.randomUUID().toString() + extension;

//文件的请求路径

String filePath = aliOssUtil.upload(file.getBytes(), objectName);

return Result.success(filePath);

} catch (IOException e) {

log.error("文件上传失败:{}",e);

}

return Result.error("文件上传失败");

}

@Data

@AllArgsConstructor

@Slf4j

public class AliOssUtil {

private String endpoint;

private String accessKeyId;

private www.laipuhuo.com.String accessKeySecret;

private String bucketName;

/**

* 文件上传

*

* @param bytes

* @param objectName

* @return

*/

public String upload(byte[] bytes, String objectName) {

// 创建OSSClient实例。

OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);

try {

// 创建PutObject请求。

ossClient.putObject(bucketName, objectName, new ByteArrayInputStream(bytes));

} catch (OSSException oe) {

System.out.println("Caught an OSSException, which means your request made it to OSS, "

+ "but was rejected with an error response for some reason.");

System.out.println("Error Message:" + oe.getErrorMessage());

System.out.println("Error Code:" + oe.getErrorCode());

System.out.www.laipuhuo.com.println("Request ID:" + oe.getRequestId());

System.out.println("Host ID:" + oe.getHostId());

} catch (ClientException ce) {

System.out.println("Caught an ClientException, which means the client encountered "

+ "a serious internal problem while trying to communicate with OSS, "

+ "such as not being able to access the network.");

System.out.println("Error Message:" + ce.getMessage());

} finally {

if (ossClient != null) {

ossClient.shutdown();

}

}

//文件访问路径规则 www.laipuhuo.com.BucketName.Endpoint/ObjectName

StringBuilder stringBuilder = new StringBuilder("https://");

stringBuilder

.append(bucketName)

.append(".")

.append(endpoint)

.append("/")

.append(objectName);

log.info("文件上传到:{}", stringBuilder.toString());

return stringBuilder.toString();

}

}

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档