文章目录
前言
有关阿里云OSS有关图片上传设置过期时间的问题,困扰了我几个小时的时间,之前也不是没用过阿里OSS,但此次开发中发现原来的方法上传不了,经百度得到的代码上传之后,图片又有过期时间,这tm确实迷惑了我。
经过我仔细对比之前使用阿里OSS发现,我的Bucket设置的读写权限为私有
修改回公共读后就不需要设置过期时间了
希望各位小伙伴别再遇到我这样的问题了!
1、导入依赖
<!--阿里云OSS-->
<dependency>
<groupId>com.aliyun.oss</groupId>
<artifactId>aliyun-sdk-oss</artifactId>
<version>3.10.2</version>
</dependency>
<!-- 日期工具栏依赖 -->
<dependency>
<groupId>joda-time</groupId>
<artifactId>joda-time</artifactId>
<version>2.9.3</version>
</dependency>
2、想要设置过期时间
Bucket的读写权限要设置为私有
@Service
public class OssServiceImpl implements OssService {
//inputStream:文件的输入流file.getInputStream();
//module:指定的文件夹
//originalFilename:文件名称即file.getOriginalFilename()
@Override
public String uploadFileAvatar(InputStream inputStream,String module,String originalFilename) {
//工具类获取值
String endpoint = ConstantPropertiesUtils.END_POINT;
String accessKeyId = ConstantPropertiesUtils.ACCESS_KEY_ID;
String accessKeySecret = ConstantPropertiesUtils.ACCESS_KEY_SECRET;
String bucketName = ConstantPropertiesUtils.BUCKET_NAME;
OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
String folder = new DateTime().toString("yyyy/MM/dd");
String fileName = UUID.randomUUID().toString();
String fileExtension = originalFilename.substring(originalFilename.lastIndexOf("."));
// oss中的文件夹名
String objectName = module + "/" + folder + "/" + fileName + fileExtension;
// 创建上传文件的元信息,可以通过文件元信息设置HTTP header(设置了才能通过返回的链接直接访问)。
ObjectMetadata objectMetadata = new ObjectMetadata();
objectMetadata.setContentType("image/jpg");
// 文件上传
ossClient.putObject(bucketName, objectName, inputStream,objectMetadata);
// 设置URL过期时间为1小时。
Date expiration = new Date(System.currentTimeMillis() + 3600 * 100000);
String url = ossClient.generatePresignedUrl(bucketName, objectName, expiration).toString();
return url;
}
}
3、不想设置过期时间
Bucket的读写权限要设置为公共读
@Service
public class OssServiceImpl implements OssService {
//inputStream:文件的输入流file.getInputStream();
//module:指定的文件夹
//originalFilename:文件名称即file.getOriginalFilename()
@Override
public String uploadFileAvatar(InputStream inputStream,String module,String originalFilename) {
//工具类获取值
String endpoint = ConstantPropertiesUtils.END_POINT;
String accessKeyId = ConstantPropertiesUtils.ACCESS_KEY_ID;
String accessKeySecret = ConstantPropertiesUtils.ACCESS_KEY_SECRET;
String bucketName = ConstantPropertiesUtils.BUCKET_NAME;
//创建OSS实例
OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
String folder = new DateTime().toString("yyyy/MM/dd");
String fileName = UUID.randomUUID().toString();
String fileExtension = originalFilename.substring(originalFilename.lastIndexOf("."));
// oss中的文件夹名
String objectName = module + "/" + folder + "/" + fileName + fileExtension;
// 创建上传文件的元信息,可以通过文件元信息设置HTTP header(设置了才能通过返回的链接直接访问)。
ObjectMetadata objectMetadata = new ObjectMetadata();
objectMetadata.setContentType("image/jpg");
ossClient.putObject(bucketName, objectName, inputStream,objectMetadata);
// 关闭OSSClient。
ossClient.shutdown();
String url = "http://"+bucketName+"."+endpoint+"/"+objectName;
return url;
}
}
本篇博文到此结束,觉得不错的小伙伴可以一键三连哦!,感谢支持!!!