-
如果要列出根路径下的所有文件,path= “”
-
@param path
-
@return
*/
public static List listFileName(String path) {
List res = new ArrayList<>();
// 构造ListObjectsRequest请求。
ListObjectsRequest listObjectsRequest = new ListObjectsRequest(bucketName);
// 设置prefix参数来获取fun目录下的所有文件。
listObjectsRequest.setPrefix(path);
OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
// 列出文件。
ObjectListing listing = ossClient.listObjects(listObjectsRequest);
// 遍历所有文件
for (OSSObjectSummary objectSummary : listing.getObjectSummaries()) {
System.out.println(objectSummary.getKey());
}
// 关闭OSSClient。
ossClient.shutdown();
return res;
}
/**
- 列举文件下所有的文件url信息
*/
public static List listFileUrl(String path) {
List res = new ArrayList<>();
// 构造ListObjectsRequest请求
ListObjectsRequest listObjectsRequest = new ListObjectsRequest(bucketName);
// 设置prefix参数来获取fun目录下的所有文件。
listObjectsRequest.setPrefix(path);
OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
// 列出文件。
ObjectListing listing = ossClient.listObjects(listObjectsRequest);
// 遍历所有文件。
for (OSSObjectSummary objectSummary : listing.getObjectSummaries()) {
//文件访问路径
Date expiration = new Date(System.currentTimeMillis() + 3600L * 1000 * 24 * 365 * 100);
URL url = ossClient.generatePresignedUrl(bucketName, objectSummary.getKey(), expiration);
res.add(url.toString());
}
// 关闭OSSClient。
ossClient.shutdown();
return res;
}
/**
-
判断文件是否存在
-
@param objectName
-
@return
*/
public static boolean isFileExist(String objectName) {
OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
boolean res = ossClient.doesObjectExist(bucketName, objectName);
return res;
}
/**
-
通过文件名下载文件
-
@param objectName 要下载的文件名
-
@param localFileName 本地要创建的文件名
*/
public static void downloadFile(String objectName, String localFileName) {
OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
// 下载OSS文件到本地文件。如果指定的本地文件存在会覆盖,不存在则新建。
ossClient.getObject(new GetObjectRequest(bucketName, objectName), new File(localFileName));
// 关闭OSSClient。
ossClient.shutdown();
}
/**
-
删除文件或目录
-
@param objectName
*/
public static void delelteFile(String objectName) {
OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
ossClient.deleteObject(bucketName, objectName);
ossClient.shutdown();
}
/**
-
批量删除文件或目录
-
@param keys
*/
public static void deleteFiles(List keys) {
OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
// 删除文件。
DeleteObjectsResult deleteObjectsResult = ossClient.deleteObjects(new DeleteObjectsRequest(bucketName).withKeys(keys));
java.util.List deletedObjects = deleteObjectsResult.getDeletedObjects();
ossClient.shutdown();
}
/**
-
创建文件夹
-
@param folder
-
@return
*/
public static String createFolder(String folder) {
// 文件夹名
final String keySuffixWithSlash = folder;
OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
// 判断文件夹是否存在,不存在则创建
if (!ossClient.doesObjectExist(bucketName, keySuffixWithSlash)) {
// 创建文件夹
ossClient.putObject(bucketName, keySuffixWithSlash, new ByteArrayInputStream(new byte[0]));
// 得到文件夹名
OSSObject object = ossClient.getObject(bucketName, keySuffixWithSlash);
String fileDir = object.getKey();
ossClient.shutdown();
return fileDir;
}
return keySuffixWithSlash;
}
}
注意:为了避免OSS链接出现 connection pool shutdown
错误,不要在类中创建了OSSClient对象 ,因为这样做的话所有方法共用此实例对象,在前端很短的时间内连续提交,造成异常错误。应该将OSSClient对象在方法中创建。
class AliOSSUtilTest {
@Test
void upload() throws FileNotFoundException {
//上传文件
String url = AliOSSUtil.upload(“E:\图片\510.jpg”, “/aa/bb/ba.jpg”);
System.out.println(url);
}
@Test
void listFileName() {
List res = AliOSSUtil.listFileName(“aa/”);
res.forEach(System.out::println);
}
@Test
void listFileUrl() {
List res = AliOSSUtil.listFileUrl(“aa/”);
res.forEach(System.out::println);
}
@Test
void isFileExist() {
boolean res = AliOSSUtil.isFileExist(“aa/bb/ab1637160001528.jpg”);
System.out.println(res);
}
@Test
void downloadFile() {
AliOSSUtil.downloadFile(“aa/bb/ab1637160001528.jpg”, “d:/aaawer.jpg”);
}
@Test
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数前端工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Web前端开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新
如果你觉得这些内容对你有帮助,可以添加V获取:vip1024c (备注前端)
最后
由于文档内容过多,为了避免影响到大家的阅读体验,在此只以截图展示部分内容
端开发知识点,真正体系化!**
由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新
如果你觉得这些内容对你有帮助,可以添加V获取:vip1024c (备注前端)
[外链图片转存中…(img-NcYWXpEb-1711883234620)]
最后
[外链图片转存中…(img-ahg82gMv-1711883234621)]
[外链图片转存中…(img-RaMGshDK-1711883234621)]
由于文档内容过多,为了避免影响到大家的阅读体验,在此只以截图展示部分内容