NuGet 引入 SDK, Aliyun.OSS.SDK(适用于.NET Framework)或Aliyun.OSS.SDK.NetCore(适用于.Net Core)
一、OSS上同一路径下文件批量下载
假设OSS上Bucket中有四个文件:testfile/001.txt、testfile/002.txt、testfile/003.txt、testfile/004.txt,批量下载四个文件,并将四个文件存储本地路径:“D:/localpath/”下。
using Aliyun.OSS;
public void Main(){
// yourEndpoint填写Bucket所在地域对应的Endpoint。以华东1(杭州)为例,Endpoint填写为https://oss-cn-hangzhou.aliyuncs.com。
string endpoint = "yourendpoint";
// 阿里云账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM用户进行API访问或日常运维,请登录RAM控制台创建RAM用户。
string accessKeyId ="youraccessKeyId";
string accessKeySecret ="youraccessKeySecret";
// 填写Bucket名称,例如examplebucket。
string bucketName = "examplebucket";
string errMsg = string.Empty;
OssClient client = new OssClient(endpoint, accessKeyId, accessKeySecret);
try
{
//oss文件夹名称
string ossFile = "testfile";
// 构造ListObjectsRequest请求,Prefix 以什么名字开头的文件,Marker 排除指定 文件名
var listObjectsRequest = new ListObjectsRequest(bucketName) { Prefix = ossFile + "/", Delimiter = "/", Marker = ossFile + "/" , MaxKeys = 1000};
var result = client.ListObjects(listObjectsRequest);
//本地存储路劲
string localPath = "D:\\localpath";
if (!Directory.Exists(localPath))
{
Directory.CreateDirectory(localPath);
}
foreach (var summary in result.ObjectSummaries)
{
string key = summary.Key;
string fileName = System.IO.Path.GetFileName(key);
string downloadFilename = localPath + "\\" + fileName;
DownLoadFile(downloadFilename, key);
}
while (result.IsTruncated)
{
listObjectsRequest = new ListObjectsRequest(bucketName) { Prefix = ossFile + "/", Delimiter = "/", Marker = result.NextMarker, MaxKeys = 1000 };
result = client.ListObjects(listObjectsRequest);
foreach (var summary in result.ObjectSummaries)
{
string key = summary.Key;
string fileName = System.IO.Path.GetFileName(key);
string downloadFilename = localPath + "\\" + fileName;
DownLoadFile(downloadFilename, key);
}
}
}
catch (OssException ex)
{
Console.WriteLine("Failed with error code: {0}; Error info: {1}. \nRequestID:{2}\tHostID:{3}",
ex.ErrorCode, ex.Message, ex.RequestId, ex.HostId);
}
catch (Exception ex)
{
Console.WriteLine("Failed with error info: {0}", ex.Message);
}
}
public void DownLoadFile(string downloadFilename, string key)
{
// yourEndpoint填写Bucket所在地域对应的Endpoint。以华东1(杭州)为例,Endpoint填写为https://oss-cn-hangzhou.aliyuncs.com。
string endpoint = "yourendpoint";
// 阿里云账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM用户进行API访问或日常运维,请登录RAM控制台创建RAM用户。
string accessKeyId ="youraccessKeyId";
string accessKeySecret ="youraccessKeySecret";
// 填写Bucket名称,例如examplebucket。
string bucketName = "examplebucket";
OssClient client = new OssClient(endpoint, accessKeyId, accessKeySecret);
var fileResult = client.GetObject(bucketName, key);
using (var requestStream = fileResult.Content)
{
using (var fs = File.Open(downloadFilename, FileMode.OpenOrCreate))
{
int length = 4 * 1024;
var buf = new byte[length];
do
{
length = requestStream.Read(buf, 0, length);
fs.Write(buf, 0, length);
} while (length != 0);
}
}
}