阿里云OSS有关图片、文件上传有过期时间的坑

前言

有关阿里云OSS有关图片上传设置过期时间的问题,困扰了我几个小时的时间,之前也不是没用过阿里OSS,但此次开发中发现原来的方法上传不了,经百度得到的代码上传之后,图片又有过期时间,这tm确实迷惑了我。
在这里插入图片描述
经过我仔细对比之前使用阿里OSS发现,我的Bucket设置的读写权限为==私有==
在这里插入图片描述
在这里插入图片描述
修改回==公共读==后就不需要设置过期时间了
在这里插入图片描述
希望各位小伙伴别再遇到我这样的问题了!

在这里插入图片描述


1、导入依赖

1
2
3
4
5
6
7
8
9
10
11
12
13
xml复制代码        <!--阿里云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的读写权限要设置为==私有==

在这里插入图片描述

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
java复制代码@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的读写权限要设置为==公共读==

在这里插入图片描述

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
java复制代码@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;
}
}

本篇博文到此结束,觉得不错的小伙伴可以一键三连哦!,感谢支持!!!

Java学习路线目录索引

在这里插入图片描述

本文转载自: 掘金

开发者博客 – 和开发相关的 这里全都有

0%