实现从oss(阿里云)服务器批量下载文件
2018-01-11 18:16
976 查看
参考链接:开放式存储(OSS)Java API手册 1.0 documentation
// 创建OSSClient实例
OSSClient ossClient = new OSSClient(endpoint, accessKeyId, accessKeySecret);
// 构造ListObjectsRequest请求
ListObjectsRequest listObjectsRequest = new ListObjectsRequest(bucketName);
//Delimiter 设置为 “/” 时,罗列该文件夹下的文件
listObjectsRequest.setDelimiter("/");
//Prefix 设为某个文件夹名,罗列以此 Prefix 开头的文件
listObjectsRequest.setPrefix("fun/");
ObjectListing listing = ossClient.listObjects(listObjectsRequest);
//遍历CommonPrefix:目录下的所有子文件夹
for (String commonPrefix : listing.getCommonPrefixes()) {
//commonPrefix: fun/like/、fun/hate/
System.out.println(commonPrefix);
//按照上述代码进行批量下载
}
一、OSS上同一路径下文件批量下载
假设OSS上Bucket中有四个文件:fun/like/001.avi、fun/like/002.avi、fun/like/003.jpg、fun/like/004.mp3,批量下载四个文件,并将四个文件存储本地路径:“D:/fun/like/”下,即:D:/fun/like/(001.avi、002.avi、003.jpg、004.mp3)。/** * OSS文件批量下载 * * @param localPath 本地存储路径 * @param ossPath 文件在OSS上的路径 */ public static void imageBatchDownload(String localPath, String ossPath) { // endpoint以杭州为例,其它region请按实际情况填写 String endpoint = "oss-cn-shanghai.aliyuncs.com"; // 云账号AccessKey有所有API访问权限,建议遵循阿里云安全最佳实践,创建并使用RAM子账号进行API访问或日常运维,请登录 https://ram.console.aliyun.com 创建 String accessKeyId = "<yourAccessKeyId>"; String accessKeySecret = "<yourAccessKeySecret>"; String bucketName = "<yourBucketName>"; // 创建OSSClient实例 OSSClient ossClient = new OSSClient(endpoint, accessKeyId, accessKeySecret); // 构造ListObjectsRequest请求 ListObjectsRequest listObjectsRequest = new ListObjectsRequest(bucketName); //Delimiter 设置为 “/” 时,罗列该文件夹下的文件 listObjectsRequest.setDelimiter("/"); //Prefix 设为某个文件夹名,罗列以此 Prefix 开头的文件 listObjectsRequest.setPrefix("fun/like/"); ObjectListing listing = ossClient.listObjects(listObjectsRequest); // 遍历所有Object:目录下的文件 for (OSSObjectSummary objectSummary : listing.getObjectSummaries()) { //key:fun/like/001.avi等,即:Bucket中存储文件的路径 String key = objectSummary.getKey(); //判断文件所在本地路径是否存在,若无,新建目录 File file = new File(localPath + key); File fileParent = file.getParentFile(); if (!fileParent.exists()) { fileParent.mkdirs(); } //下载object到文件 ossClient.getObject(new GetObjectRequest(bucketName, key), file); } System.out.println("下载完成"); // 关闭client ossClient.shutdown(); }
二、OSS上不同路径下文件批量下载
若批量下载文件不在同一路径下,假设OSS上Bucket中有四个文件:fun/like/001.avi、fun/hate/002.avi、可进行如下操作:// 创建OSSClient实例
OSSClient ossClient = new OSSClient(endpoint, accessKeyId, accessKeySecret);
// 构造ListObjectsRequest请求
ListObjectsRequest listObjectsRequest = new ListObjectsRequest(bucketName);
//Delimiter 设置为 “/” 时,罗列该文件夹下的文件
listObjectsRequest.setDelimiter("/");
//Prefix 设为某个文件夹名,罗列以此 Prefix 开头的文件
listObjectsRequest.setPrefix("fun/");
ObjectListing listing = ossClient.listObjects(listObjectsRequest);
//遍历CommonPrefix:目录下的所有子文件夹
for (String commonPrefix : listing.getCommonPrefixes()) {
//commonPrefix: fun/like/、fun/hate/
System.out.println(commonPrefix);
//按照上述代码进行批量下载
}
相关文章推荐
- 实现从oss(阿里云)服务器以附件形式下载文件(含批量下载)
- 实现从oss(阿里云)服务器以附件形式下载文件(含批量下载)
- java实现阿里OSS服务器多文件打包ZIP下载,批量下载
- 阿里云OSS文件下载功能简易实现
- 在MVC中实现和网站不同服务器的批量文件下载以及NPOI下载数据到Excel的简单学习
- 通过设置http的头信息实现服务器不保存文件直接下载
- 文件下载服务器与客户端实现
- 利用WebService实现远程服务器文件的上传和下载
- 用xfire实现从服务器上传和下载文件
- FTP批量下载文件到SAP服务器
- 在ASP.NET中实现压缩多个文件为.zip文件,实现批量下载功能
- Asp.net 实现选择文件批量下载
- 在MFC下实现POST网页表单,下载服务器文件或取得网页源代码
- Struts2 结合HttpClient 实现远程服务器文件下载
- 利用WebService实现远程服务器文件的上传和下载
- jsp+servlet实现大型文件下载(tomcat服务器),将自己今天做的和大家一起分享
- ASP.NET实现批量下载文件及附件的方法详细讲解
- 利用WebService实现远程服务器文件的上传和下载
- php实现从ftp服务器上下载文件树到本地电脑的程序
- [转载]winform自动更新并实现文件的批量异步下载