From 17e86eb21427d9cd9215f499a6af4d7f35de7978 Mon Sep 17 00:00:00 2001 From: ArgonarioD Date: Thu, 6 Jul 2023 11:33:55 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20complete=E6=8E=A5=E5=8F=A3=E6=97=A0?= =?UTF-8?q?=E6=B3=95=E4=BD=BF=E7=94=A8=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- AicsKnowledgeBase_file/Controllers/FileController.cs | 10 +++++++--- .../Handlers/KnowledgeFileHandler.cs | 11 +++++++---- AicsKnowledgeBase_file/Handlers/TencentCosHandler.cs | 2 +- 3 files changed, 15 insertions(+), 8 deletions(-) diff --git a/AicsKnowledgeBase_file/Controllers/FileController.cs b/AicsKnowledgeBase_file/Controllers/FileController.cs index 1c8bed2..ebfc64e 100644 --- a/AicsKnowledgeBase_file/Controllers/FileController.cs +++ b/AicsKnowledgeBase_file/Controllers/FileController.cs @@ -53,10 +53,10 @@ public class FileController : ControllerBase { return Ok(); } - [HttpPost("complete/{ticket}")] - public async Task FilePostComplete(string fileId, string ticket) { + [HttpPost("complete")] + public async Task FilePostComplete(string fileId, [FromForm] CompleteFileDto dto) { var metadata = await _knowledgeFileHandler.GetFileMetadata(fileId); - if (metadata.Ticket != ticket) { + if (metadata.Ticket != dto.Ticket) { return this.ProblemFromCode(ErrorCodes.TicketMismatch); } @@ -80,6 +80,10 @@ public record UploadFileDto( IFormFile File ); +public record CompleteFileDto( + string Ticket +); + internal record FileStatus( bool IsCompleted, string Md5, diff --git a/AicsKnowledgeBase_file/Handlers/KnowledgeFileHandler.cs b/AicsKnowledgeBase_file/Handlers/KnowledgeFileHandler.cs index 27c9381..fd92ed7 100644 --- a/AicsKnowledgeBase_file/Handlers/KnowledgeFileHandler.cs +++ b/AicsKnowledgeBase_file/Handlers/KnowledgeFileHandler.cs @@ -38,8 +38,8 @@ public class KnowledgeFileHandler { return $"{FilePath}/{fileId}.part.{rangeStart}-{rangeEnd}"; } - public string GetFileName(string fileId) { - return $"{FilePath}/{fileId}"; + public string GetFileName(string fileId, string suffix) { + return $"{FilePath}/{fileId}.{suffix}"; } public async Task SaveFileSlice(string fileId, IFormFile file, ulong rangeStart, ulong rangeEnd) { @@ -69,7 +69,7 @@ public class KnowledgeFileHandler { } } - var fileStream = File.Create($"{FilePath}/{fileId}"); + var fileStream = File.Create(GetFileName(fileId, metadata.Suffix)); foreach (var slice in slices) { var sliceStream = File.OpenRead(GetSliceFileName(fileId, slice.Item1, slice.Item2)); await sliceStream.CopyToAsync(fileStream); @@ -79,10 +79,13 @@ public class KnowledgeFileHandler { } fileStream.Close(); + metadata.IsCompleted = true; + await SaveFileMetadata(fileId, metadata); } public async Task> ReadRanged(string fileId, ulong rangeStart, ulong rangeEnd) { - var fileStream = File.OpenRead($"{FilePath}/{fileId}"); + var metadata = await GetFileMetadata(fileId); + var fileStream = File.OpenRead(GetFileName(fileId, metadata.Suffix)); var buffer = new Memory(new byte[rangeEnd - rangeStart]); await fileStream.ReadExactlyAsync(buffer); fileStream.Close(); diff --git a/AicsKnowledgeBase_file/Handlers/TencentCosHandler.cs b/AicsKnowledgeBase_file/Handlers/TencentCosHandler.cs index a36b357..87b2bc7 100644 --- a/AicsKnowledgeBase_file/Handlers/TencentCosHandler.cs +++ b/AicsKnowledgeBase_file/Handlers/TencentCosHandler.cs @@ -29,7 +29,7 @@ public class TencentCosHandler { public async Task UploadFile(string fileId, string fileSuffix) { var uploadTask = new COSXMLUploadTask(_tencentCosOptions.Bucket, $"{fileId}.{fileSuffix}"); - uploadTask.SetSrcPath(_knowledgeFileHandler.GetFileName(fileId)); + uploadTask.SetSrcPath(_knowledgeFileHandler.GetFileName(fileId, fileSuffix)); await _transferManager.UploadAsync(uploadTask); } } \ No newline at end of file