public void Rename(string oldname, string newname) { try { cosXml = GetCosXml(); string sourceAppid = _cosOptions.Appid; string sourceBucket = _cosOptions.Bucket; string sourceRegion = _cosOptions.Region; string sourceKey = GetFullKey(oldname); CopySourceStruct copySource = new CopySourceStruct(sourceAppid, sourceBucket, sourceRegion, sourceKey); string bucket = _cosOptions.Bucket; string key = GetFullKey(newname); CopyObjectRequest request = new CopyObjectRequest(bucket, key); request.SetSign(TimeUtils.GetCurrentTime(TimeUnit.SECONDS), KEY_DURATION_SECOND); request.SetCopySource(copySource); request.SetCopyMetaDataDirective(COSXML.Common.CosMetaDataDirective.COPY); CopyObjectResult result = cosXml.CopyObject(request); //Console.WriteLine(result.GetResultInfo()); Delete(oldname); } catch (COSXML.CosException.CosClientException clientEx) { Logging.Log.WriteErrorMessage(LOGTAG, "Rename", clientEx, "Rename failed: {0} to {1}", oldname, newname); throw; } catch (COSXML.CosException.CosServerException serverEx) { Logging.Log.WriteErrorMessage(LOGTAG, "Rename", serverEx, "Rename failed: {0} to {1}, {2}", oldname, newname, serverEx.GetInfo()); throw; } }
private QCloudServer() { QLog.SetLogLevel(Level.V); uin = "1278687956"; appid = "1253653367"; bucketVersioning = "dotnet-ut-versioning-1253653367"; regionForBucketVersioning = "ap-beijing"; bucketForObjectTest = "dotnet-ut-obj-1253653367"; region = "ap-guangzhou"; secretId = Environment.GetEnvironmentVariable("COS_KEY"); secretKey = Environment.GetEnvironmentVariable("COS_SECRET"); if (secretId == null) { secretId = Environment.GetEnvironmentVariable("COS_KEY", EnvironmentVariableTarget.Machine); secretKey = Environment.GetEnvironmentVariable("COS_SECRET", EnvironmentVariableTarget.Machine); } CosXmlConfig config = new CosXmlConfig.Builder() .SetAppid(appid) .SetRegion(region) .SetDebugLog(true) .IsHttps(true) .SetConnectionLimit(512) .SetConnectionTimeoutMs(10 * 1000) .SetReadWriteTimeoutMs(10 * 1000) .Build(); long keyDurationSecond = 600; QCloudCredentialProvider qCloudCredentialProvider = new DefaultQCloudCredentialProvider(secretId, secretKey, keyDurationSecond); cosXml = new CosXmlServer(config, qCloudCredentialProvider); }
/// <summary> /// 获取Cos操作的CosXml类 /// </summary> /// <param name="tmpSecretId">临时密钥 SecretId</param> /// <param name="tmpSecretKey">临时密钥 SecretKey</param> /// <param name="tmpToken">临时密钥 token</param> /// <param name="tmpExpireTime">临时密钥有效截止时间,精确到秒</param> public CosXml getCosXml(string tmpSecretId, string tmpSecretKey, string tmpToken, long tmpExpireTime) { cosCredentialProvider = new DefaultSessionQCloudCredentialProvider(tmpSecretId, tmpSecretKey, tmpExpireTime, tmpToken); cosXml = new CosXmlServer(config, cosCredentialProvider); return(cosXml); }
public TencentCosStorageUploadProcessor(TencentCosStorageConfigure configure, CosXml client, IFileNameGenerator fileNameGenerator, ISubdirectoryGenerator subdirectoryGenerator, IFileValidator fileValidator) { Configure = configure; Client = client; FileNameGenerator = fileNameGenerator; SubdirectoryGenerator = subdirectoryGenerator; FileValidator = fileValidator; }
public void Run() { FileRequest fileRequest = new FileRequest(); int status = fileRequest.Download(File.Id, out FileListResponse res); switch (status) { case -20000: TaskStatusDetectionThread.Abort(); DownloadTaskList.SetFailure(File.Key, "请求服务器失败,请稍后再试。"); break; case -20001: TaskStatusDetectionThread.Abort(); DownloadTaskList.SetFailure(File.Key, "请求下载的文件不存在。"); break; case -10000: TaskStatusDetectionThread.Abort(); DownloadTaskList.SetFailure(File.Key, res.message); break; case 0: { string bucket = res.data.tencentCos.bucket; //存储桶,格式:BucketName-APPID string cosPath = res.data.files[0].storageName; //对象在存储桶中的位置标识符,即称对象键 string localDir = File.LocalPath; //本地文件夹 string localFileName = File.FileName; //指定本地保存的文件名 CosService cosService = new CosService(res.data.tencentCos.region); CosXml cosXml = cosService.getCosXml(res.data.token.credentials.tmpSecretId, res.data.token.credentials.tmpSecretKey, res.data.token.credentials.token, res.data.token.expiredTime); TransferConfig transferConfig = new TransferConfig(); TransferManager transferManager = new TransferManager(cosXml, transferConfig); downloadTask = new COSXMLDownloadTask(bucket, cosPath, localDir, localFileName); downloadTask.progressCallback = delegate(long completed, long total) { DownloadTaskList.SetProgress(File.Key, completed, total); Console.WriteLine(String.Format("progress = {0:##.##}%", completed * 100.0 / total)); }; downloadTask.successCallback = delegate(CosResult cosResult) { TaskStatusDetectionThread.Abort(); COSXMLDownloadTask.DownloadTaskResult result = cosResult as COSXMLDownloadTask.DownloadTaskResult; Console.WriteLine("successCallback: " + result.GetResultInfo()); string eTag = result.eTag; DownloadTaskList.SetSuccess(File.Key); }; downloadTask.failCallback = delegate(CosClientException clientEx, CosServerException serverEx) { if (clientEx != null) { Console.WriteLine("CosClientException: " + clientEx); } if (serverEx != null) { Console.WriteLine("CosServerException: " + serverEx.GetInfo()); } TaskStatusDetectionThread.Abort(); DownloadTaskList.SetFailure(File.Key, "COS下载出错。"); }; transferManager.Download(downloadTask); } break; default: TaskStatusDetectionThread.Abort(); DownloadTaskList.SetFailure(File.Key, "未知原因下载失败。"); break; } }
public TencentCosStorageMergeProcessor(ChunkedUploadTencentCosStorageConfigure configure, CosXml client, IMemoryCache memoryCache) { Configure = configure; MemoryCache = memoryCache; Client = client; }
public void Run() { string srcPath = File.LocalPath + "\\" + File.FileName; //本地文件绝对路径 FileRequest fileRequest = new FileRequest(); int status = fileRequest.Upload(srcPath, File.RemotePath + "\\" + File.FileName, out UploadResponse res); switch (status) { case -20000: TaskStatusDetectionThread.Abort(); UploadTaskList.SetFailure(File.Key, "请求服务器失败,请稍后再试。"); break; case -10000: TaskStatusDetectionThread.Abort(); UploadTaskList.SetFailure(File.Key, res.message); break; case 101: TaskStatusDetectionThread.Abort(); UploadTaskList.SetProgress(File.Key, 1, 1); UploadTaskList.SetSuccess(File.Key); break; case 100: { string bucket = res.data.tencentCos.bucket; //存储桶,格式:BucketName-APPID string cosPath = res.data.file.storageName; //对象在存储桶中的位置标识符,即称对象键 CosService cosService = new CosService(res.data.tencentCos.region); CosXml cosXml = cosService.getCosXml(res.data.token.credentials.tmpSecretId, res.data.token.credentials.tmpSecretKey, res.data.token.credentials.token, res.data.token.expiredTime); TransferConfig transferConfig = new TransferConfig(); TransferManager transferManager = new TransferManager(cosXml, transferConfig); PutObjectRequest putObjectRequest = new PutObjectRequest(bucket, cosPath, srcPath); uploadTask = new COSXMLUploadTask(putObjectRequest); uploadTask.SetSrcPath(srcPath); uploadTask.progressCallback = delegate(long completed, long total) { UploadTaskList.SetProgress(File.Key, completed, total); Console.WriteLine(String.Format("progress = {0:##.##}%", completed * 100.0 / total)); }; uploadTask.successCallback = delegate(CosResult cosResult) { TaskStatusDetectionThread.Abort(); fileRequest.ConfirmUpload(res.data.file.id, res.data.file.guid); COSXMLUploadTask.UploadTaskResult result = cosResult as COSXMLUploadTask.UploadTaskResult; Console.WriteLine("successCallback: " + result.GetResultInfo()); string eTag = result.eTag; UploadTaskList.SetSuccess(File.Key); }; uploadTask.failCallback = delegate(CosClientException clientEx, CosServerException serverEx) { if (clientEx != null) { Console.WriteLine("CosClientException: " + clientEx); } if (serverEx != null) { Console.WriteLine("CosServerException: " + serverEx.GetInfo()); } TaskStatusDetectionThread.Abort(); UploadTaskList.SetFailure(File.Key, "COS上传出错。"); }; transferManager.Upload(uploadTask); } break; default: TaskStatusDetectionThread.Abort(); UploadTaskList.SetFailure(File.Key, "未知原因上传失败。"); break; } }
public TencentCosService(IOptions <TencentCosOptions> options) { _cosConfig = options.Value; _cosXml = InitCosXml(); }
public TencentCosStorageChunkedUploadProcessor(ChunkedUploadTencentCosStorageConfigure configure, IFileValidator fileValidator, CosXml client, IMemoryCache memoryCache, IFileNameGenerator fileNameGenerator, ISubdirectoryGenerator subdirectoryGenerator) { Configure = configure; FileValidator = fileValidator; MemoryCache = memoryCache; FileNameGenerator = fileNameGenerator; SubdirectoryGenerator = subdirectoryGenerator; Client = client; }
public void InitCosXmlServer(CosXml cosXml) { cosXmlServer = cosXml; }