先講刪除,上傳和接收轉碼之後講。
首先阿里雲的視頻轉碼服務的源文件和轉碼後的文件以及視頻的封面會存儲在阿里雲的對象存儲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;
}
}
代碼寫的不好,獻醜了。主要就是這三個函數了,改改獲取值的地方,再改改刪除己方數據庫的邏輯,就能用了。
刪除就是找到你存放的路徑,這些路徑請自行配置好。