c#對接阿里雲視訊轉碼服務之刪除
阿新 • • 發佈:2018-12-31
先講刪除,上傳和接收轉碼之後講。
首先阿里雲的視訊轉碼服務的原始檔和轉碼後的檔案以及視訊的封面會儲存在阿里雲的物件儲存OSS裡,我的做法是分兩個Bucket,一個用來存放原始檔,一個用來存放轉碼後的檔案以及視訊封面。所以我們在刪除的時候要全部刪除。
C#直接引用阿里雲的Aliyun.OSS.dll,引用好就可以開刷刪除了。
/// <summary> /// 這裡自行配置相關屬性 /// </summary> public string AccessKeyId { get { return ConfigurationManager.AppSettings["AccessKeyId"]; } set { AccessKeyId = value; } } public string AccessKeySecret { get { return ConfigurationManager.AppSettings["AccessKeySecret"]; } set { AccessKeySecret = value; } } public string Endpoint { get { return ConfigurationManager.AppSettings["Endpoint"]; } set { Endpoint = value; } } public string InputBucketName { get { return ConfigurationManager.AppSettings["InputBucketName"]; } set { InputBucketName = value; } } public string OutputBucketName { get { return ConfigurationManager.AppSettings["OutputBucketName"]; } set { OutputBucketName = value; } } /// <summary> /// 視訊輸出輸入共同放目錄 /// </summary> public string Folder { get { return ConfigurationManager.AppSettings["folder"]; } set { Folder = value; } } /// <summary> /// 視訊圖片存放目錄 /// </summary> public string ImgFolder { get { return ConfigurationManager.AppSettings["ImgFolder"]; } set { ImgFolder = value; } } }
/// <summary> /// 刪除OSS相關檔案 /// </summary> /// <param name="RunId">檔案的標識,阿里雲提供的</param> /// <param name="FileName">檔名</param> /// <param name="FileType">檔案的字尾</param> /// <param name="ossConfig">存放一系列的相關引數</param> /// <param name="client">OssClient例項</param> /// <param name="delType">1.刪除輸入相關檔案 | 2.刪除輸入原始檔|3.刪除視訊封面圖片</param> public void DelOssFile(string RunId, string FileName, string FileType, NiurenOSSConfig ossConfig, OssClient client, int delType) { ListObjectsRequest listObjectsRequest = new ListObjectsRequest(ossConfig.OutputBucketName); if (delType == 1) { listObjectsRequest.Prefix = ossConfig.Folder + "/" + RunId + "/"; } else if (delType == 2) { listObjectsRequest = new ListObjectsRequest(ossConfig.InputBucketName); listObjectsRequest.Prefix = ossConfig.Folder + "/" + FileName + FileType; } else if (delType == 3) { listObjectsRequest.Prefix = ossConfig.ImgFolder + "/" + RunId + ".jpg"; } var result = client.ListObjects(listObjectsRequest); var keys = new List<string>(); if (result.ObjectSummaries.Count() > 0) //該目錄下有沒有檔案 { foreach (var summary in result.ObjectSummaries) { keys.Add(summary.Key); } DeleteObjectsRequest request; if (delType == 2) { request = new DeleteObjectsRequest(ossConfig.InputBucketName, keys, false); } else { request = new DeleteObjectsRequest(ossConfig.OutputBucketName, keys, false); } client.DeleteObjects(request); } }
程式碼寫的不好,獻醜了。主要就是這三個函數了,改改獲取值的地方,再改改刪除己方資料庫的邏輯,就能用了。public int DelVod(string RunId, string FileName, string FileType) { NiurenOSSConfig ossConfig = new NiurenOSSConfig(); var client = new OssClient(ossConfig.Endpoint, ossConfig.AccessKeyId, ossConfig.AccessKeySecret); try { for (int i = 1; i <= 3; i++) //此方法執行三次 { DelOssFile(RunId, FileName, FileType, ossConfig, client, i); } return vodUploadDAL.DelVod(RunId); //刪除了檔案最後刪除自己的資料庫記錄 } catch (Exception) { return -2; } }
刪除就是找到你存放的路徑,這些路徑請自行配置好。