|
@@ -410,12 +410,15 @@ namespace IES.ExamServer.Controllers
|
|
await Parallel.ForEachAsync(evaluationPaper.blobs, parallelOptions, async (blob, cancellationToken) =>
|
|
await Parallel.ForEachAsync(evaluationPaper.blobs, parallelOptions, async (blob, cancellationToken) =>
|
|
{
|
|
{
|
|
currCount++;
|
|
currCount++;
|
|
|
|
+ double size = Math.Round(blob.size * 1.0 / 1024 / 1024, 2);
|
|
|
|
+ string? fileName = Path.GetFileName(blob.path);
|
|
try
|
|
try
|
|
{
|
|
{
|
|
// 下载 Blob 文件到本地
|
|
// 下载 Blob 文件到本地
|
|
//httpClient.Timeout = TimeSpan.FromSeconds(300);
|
|
//httpClient.Timeout = TimeSpan.FromSeconds(300);
|
|
|
|
+
|
|
HttpResponseMessage blobMessage = await httpClient.GetAsync($"{url}/{cnt}/{blob.path}?{sas}", cancellationToken);
|
|
HttpResponseMessage blobMessage = await httpClient.GetAsync($"{url}/{cnt}/{blob.path}?{sas}", cancellationToken);
|
|
-
|
|
|
|
|
|
+
|
|
if (blobMessage.IsSuccessStatusCode)
|
|
if (blobMessage.IsSuccessStatusCode)
|
|
{
|
|
{
|
|
byte[] bytes = await blobMessage.Content.ReadAsByteArrayAsync(cancellationToken);
|
|
byte[] bytes = await blobMessage.Content.ReadAsByteArrayAsync(cancellationToken);
|
|
@@ -429,20 +432,20 @@ namespace IES.ExamServer.Controllers
|
|
}
|
|
}
|
|
else
|
|
else
|
|
{
|
|
{
|
|
- string? fileName = Path.GetFileName(blob.path);
|
|
|
|
|
|
+
|
|
await System.IO.File.WriteAllBytesAsync(Path.Combine(path_paper, fileName!), bytes, cancellationToken);
|
|
await System.IO.File.WriteAllBytesAsync(Path.Combine(path_paper, fileName!), bytes, cancellationToken);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
await _signalRExamServerHub.SendMessage(_memoryCache, _logger, deviceId, Constant._Message_grant_type_download_file,
|
|
await _signalRExamServerHub.SendMessage(_memoryCache, _logger, deviceId, Constant._Message_grant_type_download_file,
|
|
- new MessageContent { dataId = evaluationClient.id, dataName = evaluationClient.name, messageType = Constant._Message_type_message, step = 4, status = Constant._Message_status_success, content = $"[进度:{currCount}/{blobCount}][大小:{blob.size * 1.0 / 1024 / 1024}kb]{evaluationExam.subjectName},{evaluationPaper.paperName},{blob.path}文件下载成功。" });
|
|
|
|
|
|
+ new MessageContent { dataId = evaluationClient.id, dataName = evaluationClient.name, messageType = Constant._Message_type_message, step = 4, status = Constant._Message_status_success, content = $"[进度:{currCount}/{blobCount}][大小:{size}kb]{evaluationExam.subjectName},{evaluationPaper.paperName},{fileName}文件下载成功。" });
|
|
}
|
|
}
|
|
else
|
|
else
|
|
{
|
|
{
|
|
string? error = await blobMessage.Content.ReadAsStringAsync(cancellationToken);
|
|
string? error = await blobMessage.Content.ReadAsStringAsync(cancellationToken);
|
|
errorMsgs.Add($"{evaluationExam.subjectName},{evaluationPaper.paperName},{blob.path}文件下载失败,{blobMessage.StatusCode},{error}");
|
|
errorMsgs.Add($"{evaluationExam.subjectName},{evaluationPaper.paperName},{blob.path}文件下载失败,{blobMessage.StatusCode},{error}");
|
|
await _signalRExamServerHub.SendMessage(_memoryCache, _logger, deviceId, Constant._Message_grant_type_download_file,
|
|
await _signalRExamServerHub.SendMessage(_memoryCache, _logger, deviceId, Constant._Message_grant_type_download_file,
|
|
- new MessageContent { dataId = evaluationClient.id, dataName = evaluationClient.name, messageType = Constant._Message_type_message, step = 4, status = Constant._Message_status_error, content = $"[进度:{currCount}/{blobCount}][大小:{blob.size * 1.0 / 1024 / 1024}kb]{evaluationExam.subjectName},{evaluationPaper.paperName},{blob.path}文件下载失败,{blobMessage.StatusCode},{error}" }, true);
|
|
|
|
|
|
+ new MessageContent { dataId = evaluationClient.id, dataName = evaluationClient.name, messageType = Constant._Message_type_message, step = 4, status = Constant._Message_status_error, content = $"[进度:{currCount}/{blobCount}][大小:{size}kb]{evaluationExam.subjectName},{evaluationPaper.paperName},{fileName}文件下载失败,{blobMessage.StatusCode},{error}" }, true);
|
|
|
|
|
|
// Console.WriteLine($"Error downloading {blob.path},{blobMessage.StatusCode},{error}");
|
|
// Console.WriteLine($"Error downloading {blob.path},{blobMessage.StatusCode},{error}");
|
|
}
|
|
}
|
|
@@ -451,7 +454,7 @@ namespace IES.ExamServer.Controllers
|
|
{
|
|
{
|
|
errorMsgs.Add($"{evaluationExam.subjectName},{evaluationPaper.paperName},{blob.path}文件下载错误,{ex.Message}");
|
|
errorMsgs.Add($"{evaluationExam.subjectName},{evaluationPaper.paperName},{blob.path}文件下载错误,{ex.Message}");
|
|
await _signalRExamServerHub.SendMessage(_memoryCache, _logger, deviceId, Constant._Message_grant_type_download_file,
|
|
await _signalRExamServerHub.SendMessage(_memoryCache, _logger, deviceId, Constant._Message_grant_type_download_file,
|
|
- new MessageContent { dataId = evaluationClient.id, dataName = evaluationClient.name, messageType = Constant._Message_type_message, step = 4, status = Constant._Message_status_error, content = $"[进度:{currCount}/{blobCount}][大小:{blob.size * 1.0 / 1024 / 1024}kb]{evaluationExam.subjectName},{evaluationPaper.paperName},{blob.path}文件下载错误,{ex.Message}" }, true);
|
|
|
|
|
|
+ new MessageContent { dataId = evaluationClient.id, dataName = evaluationClient.name, messageType = Constant._Message_type_message, step = 4, status = Constant._Message_status_error, content = $"[进度:{currCount}/{blobCount}][大小:{size}kb]{evaluationExam.subjectName},{evaluationPaper.paperName},{fileName}文件下载错误,{ex.Message}" }, true);
|
|
|
|
|
|
// 处理异常
|
|
// 处理异常
|
|
//Console.WriteLine($"Error downloading {blob.path}: {ex.Message}");
|
|
//Console.WriteLine($"Error downloading {blob.path}: {ex.Message}");
|