|
@@ -11,6 +11,7 @@ using System;
|
|
|
using System.Collections.Generic;
|
|
|
using System.Globalization;
|
|
|
using System.IO;
|
|
|
+using System.Linq;
|
|
|
using System.Text;
|
|
|
using System.Text.Json;
|
|
|
using System.Threading.Tasks;
|
|
@@ -154,45 +155,61 @@ namespace TEAMModelBI.Controllers.Census
|
|
|
List<Task<CopyFromUriOperation>> filelist = new(); //可复制256M以上文件
|
|
|
await foreach (BlobItem blobItem in oldBobCilent.GetBlobsAsync(BlobTraits.None, BlobStates.None, blobUrl))
|
|
|
{
|
|
|
- if (blobItem.Name.EndsWith(".json"))
|
|
|
+ var urlSas = _azureStorage.GetBlobSAS($"{cItem.oldSc}", blobItem.Name, BlobSasPermissions.Read | BlobSasPermissions.List); //获取容器sas和有效期
|
|
|
+ filelist.Add(newBobCilent.GetBlobClient(blobItem.Name).StartCopyFromUriAsync(new Uri(urlSas)));
|
|
|
+ ////序列化数据修改数据
|
|
|
+ //if (blobItem.Name.EndsWith(".json"))
|
|
|
+ //{
|
|
|
+ // BlobClient tempClient = oldBobCilent.GetBlobClient(blobItem.Name);
|
|
|
+ // using (var meomoryStream = new MemoryStream())
|
|
|
+ // {
|
|
|
+ // StringBuilder itemStr = new();
|
|
|
+ // BlobClient tempBlobClient = oldBobCilent.GetBlobClient(blobItem.Name);
|
|
|
+ // BlobDownloadInfo download = tempBlobClient.Download();
|
|
|
+ // var content = download.Content;
|
|
|
+ // string text;
|
|
|
+ // using (var streamReader = new StreamReader(content))
|
|
|
+ // {
|
|
|
+ // while ((text = streamReader.ReadLine()) != null)
|
|
|
+ // {
|
|
|
+ // if (streamReader.EndOfStream)
|
|
|
+ // itemStr.Append($"{text.ToString()}");
|
|
|
+ // else
|
|
|
+ // itemStr.Append($"{text.ToString()},");
|
|
|
+ // }
|
|
|
+ // streamReader.Close();
|
|
|
+ // }
|
|
|
+ // string input = itemStr.ToString();
|
|
|
+ // BlobItemInfo blobbItemInfo = input.ToObject<BlobItemInfo>();
|
|
|
+
|
|
|
+ // //var response = oldBobCilent.GetBlobClient($"{blobItem.Name}").DownloadTo(meomoryStream);
|
|
|
+ // //BlobItemInfo blobbItemInfo = Encoding.UTF8.GetString(meomoryStream.ToArray()).ToString().ToObject<BlobItemInfo>();
|
|
|
+ // blobbItemInfo.exercise.periodId = cItem.newPrdId;
|
|
|
+ // blobbItemInfo.exercise.gradeIds = cItem.newGrId;
|
|
|
+
|
|
|
+ // blobbItemInfo.exercise.subjectId = cItem.newSubId;
|
|
|
+
|
|
|
+ // var urlSas = _azureStorage.GetBlobSAS($"{cItem.newSc}", blobItem.Name, BlobSasPermissions.Read | BlobSasPermissions.List); //获取容器sas和有效期
|
|
|
+
|
|
|
+ // var ster = newBobCilent.UploadFileByContainer(blobbItemInfo.ToJsonString(), blobItem.Name, blobbItemInfo.id);
|
|
|
+ // }
|
|
|
+ //}
|
|
|
+ }
|
|
|
+ if (filelist.Count <= 256)
|
|
|
+ {
|
|
|
+ await Task.WhenAll(filelist);
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ int pages = (filelist.Count + 255) / 256;
|
|
|
+ for (int i = 0; i < pages; i++)
|
|
|
{
|
|
|
- BlobClient tempClient = oldBobCilent.GetBlobClient(blobItem.Name);
|
|
|
- using (var meomoryStream = new MemoryStream())
|
|
|
- {
|
|
|
- StringBuilder itemStr = new();
|
|
|
- BlobClient tempBlobClient = oldBobCilent.GetBlobClient(blobItem.Name);
|
|
|
- BlobDownloadInfo download = tempBlobClient.Download();
|
|
|
- var content = download.Content;
|
|
|
- string text;
|
|
|
- using (var streamReader = new StreamReader(content))
|
|
|
- {
|
|
|
- while ((text = streamReader.ReadLine()) != null)
|
|
|
- {
|
|
|
- if (streamReader.EndOfStream)
|
|
|
- itemStr.Append($"{text.ToString()}");
|
|
|
- else
|
|
|
- itemStr.Append($"{text.ToString()},");
|
|
|
- }
|
|
|
- streamReader.Close();
|
|
|
- }
|
|
|
- string input = itemStr.ToString();
|
|
|
- BlobItemInfo blobbItemInfo = input.ToObject<BlobItemInfo>();
|
|
|
-
|
|
|
- //var response = oldBobCilent.GetBlobClient($"{blobItem.Name}").DownloadTo(meomoryStream);
|
|
|
- //BlobItemInfo blobbItemInfo = Encoding.UTF8.GetString(meomoryStream.ToArray()).ToString().ToObject<BlobItemInfo>();
|
|
|
- blobbItemInfo.exercise.periodId = cItem.newPrdId;
|
|
|
- blobbItemInfo.exercise.gradeIds = cItem.newGrId;
|
|
|
-
|
|
|
- blobbItemInfo.exercise.subjectId = cItem.newSubId;
|
|
|
-
|
|
|
- var urlSas = _azureStorage.GetBlobSAS($"{cItem.newSc}", blobItem.Name, BlobSasPermissions.Read | BlobSasPermissions.List); //获取容器sas和有效期
|
|
|
-
|
|
|
- var ster = newBobCilent.UploadFileByContainer(blobbItemInfo.ToJsonString(), blobItem.Name, blobbItemInfo.id);
|
|
|
- }
|
|
|
+ List<Task<CopyFromUriOperation>> rspBlobCopyInfos = filelist.Skip((i) * 256).Take(256).ToList(); //可复制256M以上文件
|
|
|
+ //List<Task<Response<BlobCopyInfo>>> rspBlobCopyInfos = filelist.Skip((i) * 256).Take(256).ToList(); //复制256M以下文件
|
|
|
+ await Task.WhenAll(rspBlobCopyInfos);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-
|
|
|
}
|
|
|
return Ok(new { state = RespondCode.Ok});
|
|
|
}
|