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

2024-08-24 13:07:17 浏览数 (2)

/**

* 配置类,用于创建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();

}

}

0 人点赞