|
@@ -8,6 +8,8 @@ using TEAMModelOS.SDK.Context.Constant;
|
|
|
using TEAMModelOS.SDK.Helper.Security.ShaHash;
|
|
|
using System;
|
|
|
using System.IO;
|
|
|
+using Azure.Storage.Blobs.Specialized;
|
|
|
+using System.Collections.Generic;
|
|
|
|
|
|
namespace TEAMModelOS.SDK.DI
|
|
|
{
|
|
@@ -22,19 +24,49 @@ namespace TEAMModelOS.SDK.DI
|
|
|
{
|
|
|
long? size = 0;
|
|
|
try
|
|
|
- {
|
|
|
+ {
|
|
|
await foreach (var item in client.GetBlobsAsync(BlobTraits.None, BlobStates.None, prefix))
|
|
|
{
|
|
|
size += item.Properties.ContentLength;
|
|
|
};
|
|
|
return size;
|
|
|
}
|
|
|
- catch
|
|
|
+ catch
|
|
|
{
|
|
|
return size;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ /// <summary>
|
|
|
+ /// 批量刪除Blobs
|
|
|
+ /// 注意單個批次最多支持256個子請求。批處理請求的正文大小不能超過4MB,超過返回False
|
|
|
+ /// </summary>
|
|
|
+ /// <param name="prefix">篩選開頭名稱,Null代表容器</param>
|
|
|
+ public static async Task<bool> DelectBlobs(this BlobServiceClient client, string blobContainerName, string prefix = null)
|
|
|
+ {
|
|
|
+ if (string.IsNullOrWhiteSpace(prefix)) return false;
|
|
|
+
|
|
|
+ try
|
|
|
+ {
|
|
|
+ BlobContainerClient bcc = client.GetBlobContainerClient(blobContainerName);
|
|
|
+ BlobBatchClient bbc = client.GetBlobBatchClient();
|
|
|
+ List<Uri> blobs = new List<Uri>();
|
|
|
+ await foreach (var item in bcc.GetBlobsAsync(BlobTraits.None, BlobStates.None, prefix))
|
|
|
+ {
|
|
|
+ var urib = new UriBuilder(bcc.Uri);
|
|
|
+ urib.Path += "/" + item.Name;
|
|
|
+ blobs.Add(urib.Uri);
|
|
|
+ };
|
|
|
+
|
|
|
+ await bbc.DeleteBlobsAsync(blobs);
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+ catch
|
|
|
+ {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
/// <summary>
|
|
|
/// 系统管理员 资源,题目关联,htex关联,学习活动学生上传文件关联,基本信息关联,教室平面图关联,评测冷数据关联
|
|
|
/// "system": [ "res", "item", "htex", "task", "info", "room", "exam" ],
|
|
@@ -56,7 +88,7 @@ namespace TEAMModelOS.SDK.DI
|
|
|
|
|
|
// string groupName =folder;
|
|
|
|
|
|
- BlobContainerClient blobContainer = azureStorage.GetBlobContainerClient(name.ToLower().Replace("#", "")); //blobClient.GetContainerReference(groupName);
|
|
|
+ BlobContainerClient blobContainer = azureStorage.GetBlobContainerClient(name.ToLower().Replace("#", "")); //blobClient.GetContainerReference(groupName);
|
|
|
Uri url = blobContainer.Uri;
|
|
|
|
|
|
var blockBlob = blobContainer.GetBlobClient(folder + "/" + fileName);
|
|
@@ -68,23 +100,23 @@ namespace TEAMModelOS.SDK.DI
|
|
|
if (!string.IsNullOrEmpty(contenttype))
|
|
|
{
|
|
|
content_type = contenttype;
|
|
|
-
|
|
|
-
|
|
|
+
|
|
|
+
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
-
|
|
|
+
|
|
|
//blockBlob.Properties.ContentType = content_type;
|
|
|
}
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
-
|
|
|
+
|
|
|
//blockBlob.Properties.ContentType = content_type;
|
|
|
}
|
|
|
byte[] bytes = System.Text.Encoding.Default.GetBytes(text);
|
|
|
- Stream streamBlob= new MemoryStream(bytes);
|
|
|
- await blockBlob.UploadAsync(streamBlob,true);
|
|
|
+ Stream streamBlob = new MemoryStream(bytes);
|
|
|
+ await blockBlob.UploadAsync(streamBlob, true);
|
|
|
blockBlob.SetHttpHeaders(new BlobHttpHeaders { ContentType = content_type });
|
|
|
AzureBlobModel model = new AzureBlobModel(fileName, name, folder, fileName, folder, content_type, bytes.Length)
|
|
|
{
|