|
@@ -52,6 +52,7 @@ using Azure.Storage.Blobs.Models;
|
|
|
using Azure.Storage.Blobs;
|
|
|
using Azure.Storage.Blobs.Specialized;
|
|
|
using System.Web;
|
|
|
+using Azure.Storage.Sas;
|
|
|
|
|
|
namespace TEAMModelBI.Controllers.BITest
|
|
|
{
|
|
@@ -1472,6 +1473,41 @@ namespace TEAMModelBI.Controllers.BITest
|
|
|
return Ok(new { state = RespondCode.Ok });
|
|
|
}
|
|
|
|
|
|
+ [HttpPost("set-copyfile")]
|
|
|
+ public async Task<IActionResult> SetCopyFile()
|
|
|
+ {
|
|
|
+
|
|
|
+ List<Task<CopyFromUriOperation>> filelist = new List<Task<CopyFromUriOperation>>();
|
|
|
+ var azureClient = _azureStorage.GetBlobContainerClient($"0-public");//获取容器连接地址
|
|
|
+
|
|
|
+ //查询目录下所有容器路径
|
|
|
+ await foreach (BlobItem blobItem in azureClient.GetBlobsAsync(BlobTraits.None, BlobStates.None, $"TestMP4Max/"))
|
|
|
+ {
|
|
|
+ string newurl = $"{blobItem.Name}".Replace($"/SourceFile/", $"/SourceFiles/");//替换成新的容器路径
|
|
|
+ var urlSas = _azureStorage.GetBlobSAS($"0-public", blobItem.Name, BlobSasPermissions.Read | BlobSasPermissions.List); //获取容器sas和有效期
|
|
|
+ //await azureClient.GetBlobClient(newurl).StartCopyFromUriAsync(new Uri(urlSas));
|
|
|
+ filelist.Add(azureClient.GetBlobClient(newurl).StartCopyFromUriAsync(new Uri(urlSas)));
|
|
|
+ //await azureClient.GetBlobClient(newurl).SyncCopyFromUriAsync(new Uri(urlSas)); //添加复制文件到集合执行复制操作
|
|
|
+
|
|
|
+ }
|
|
|
+ if (filelist.Count <= 256)
|
|
|
+ {
|
|
|
+ await Task.WhenAll(filelist);
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ int pages = (filelist.Count + 255) / 256;
|
|
|
+ for (int i = 0; i < pages; i++)
|
|
|
+ {
|
|
|
+ List<Task<CopyFromUriOperation>> rspBlobCopyInfos = filelist.Skip((i) * 256).Take(256).ToList();
|
|
|
+ await Task.WhenAll(rspBlobCopyInfos);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ return Ok(new { state = 200 , filelist });
|
|
|
+ }
|
|
|
+
|
|
|
public class linqTest
|
|
|
{
|
|
|
public string id { get; set; }
|