60 lines
2.2 KiB
C#
60 lines
2.2 KiB
C#
using COSXML;
|
|
using COSXML.Auth;
|
|
using COSXML.Model;
|
|
using COSXML.Transfer;
|
|
using Microsoft.Extensions.Configuration;
|
|
using Microsoft.Extensions.Logging;
|
|
|
|
namespace SQLBackupToCOS
|
|
{
|
|
public class COSService
|
|
{
|
|
private readonly IConfiguration _config;
|
|
private readonly ILogger _logger;
|
|
|
|
public COSService(IConfiguration config, ILogger<COSService> logger)
|
|
{
|
|
_config = config;
|
|
_logger = logger;
|
|
}
|
|
public async Task AddFileToCOS(string srcPath)
|
|
{
|
|
var bucketName = _config.GetValue<string>("COS:BucketName") ?? "my-bucket";
|
|
var region = _config.GetValue<string>("COS:Region") ?? "ap-shanghai";
|
|
var secretId = _config.GetValue<string>("COS:SecretId") ?? "";
|
|
var secretKey = _config.GetValue<string>("COS:SecretKey") ?? "";
|
|
var filePath = _config.GetValue<string>("COS:FilePath") ?? "/data/dumps/";
|
|
CosXmlConfig config = new CosXmlConfig.Builder()
|
|
.IsHttps(true) // 设置默认 HTTPS 请求
|
|
.SetRegion(region) // 设置一个默认的存储桶地域
|
|
.Build();
|
|
QCloudCredentialProvider cosCredentialProvider = new DefaultQCloudCredentialProvider(secretId, secretKey, 600);
|
|
var cosXML = new CosXmlServer(config, cosCredentialProvider);
|
|
// 初始化 TransferConfig
|
|
TransferConfig transferConfig = new TransferConfig();
|
|
|
|
// 初始化 TransferManager
|
|
TransferManager transferManager = new TransferManager(cosXML, transferConfig);
|
|
|
|
string cosPath = Path.Combine(filePath, Path.GetFileName(srcPath));
|
|
// 上传对象
|
|
COSXMLUploadTask uploadTask = new COSXMLUploadTask(bucketName, cosPath);
|
|
uploadTask.SetSrcPath(srcPath);
|
|
|
|
uploadTask.successCallback = delegate (CosResult result)
|
|
{
|
|
_logger.LogInformation("Upload Success: " + result.GetResultInfo());
|
|
};
|
|
|
|
try
|
|
{
|
|
await transferManager.UploadAsync(uploadTask);
|
|
}
|
|
catch (Exception e)
|
|
{
|
|
_logger.LogError("CosException: " + e);
|
|
}
|
|
}
|
|
}
|
|
}
|