diff --git a/AicsKnowledgeBase_file/Controllers/FileController.cs b/AicsKnowledgeBase_file/Controllers/FileController.cs index ebfc64e..25b9804 100644 --- a/AicsKnowledgeBase_file/Controllers/FileController.cs +++ b/AicsKnowledgeBase_file/Controllers/FileController.cs @@ -44,13 +44,17 @@ public class FileController : ControllerBase { [HttpPost] public async Task UploadFilePart(string fileId, [FromForm] UploadFileDto dto) { - var metadata = await _knowledgeFileHandler.GetFileMetadata(fileId); - if (metadata.Ticket != dto.Ticket) { - return this.ProblemFromCode(ErrorCodes.TicketMismatch); - } + try { + var metadata = await _knowledgeFileHandler.GetFileMetadata(fileId); + if (metadata.Ticket != dto.Ticket) { + return this.ProblemFromCode(ErrorCodes.TicketMismatch); + } - await _knowledgeFileHandler.SaveFileSlice(fileId, dto.File, dto.RangeStart, dto.RangeEnd); - return Ok(); + await _knowledgeFileHandler.SaveFileSlice(fileId, dto.File, dto.RangeStart, dto.RangeEnd); + return Ok(); + } catch (FileNotFoundException e) { + return Problem(statusCode: StatusCodes.Status404NotFound, title: e.Message); + } } [HttpPost("complete")] diff --git a/AicsKnowledgeBase_file/Handlers/KnowledgeFileHandler.cs b/AicsKnowledgeBase_file/Handlers/KnowledgeFileHandler.cs index fd92ed7..88d5b29 100644 --- a/AicsKnowledgeBase_file/Handlers/KnowledgeFileHandler.cs +++ b/AicsKnowledgeBase_file/Handlers/KnowledgeFileHandler.cs @@ -85,10 +85,10 @@ public class KnowledgeFileHandler { public async Task> ReadRanged(string fileId, ulong rangeStart, ulong rangeEnd) { var metadata = await GetFileMetadata(fileId); - var fileStream = File.OpenRead(GetFileName(fileId, metadata.Suffix)); + await using var fileStream = File.OpenRead(GetFileName(fileId, metadata.Suffix)); var buffer = new Memory(new byte[rangeEnd - rangeStart]); + fileStream.Seek((long)rangeStart, SeekOrigin.Begin); await fileStream.ReadExactlyAsync(buffer); - fileStream.Close(); return buffer; } } \ No newline at end of file diff --git a/FileServerTests/UnitTest1.cs b/FileServerTests/UnitTest1.cs index 212ef9b..3554f59 100644 --- a/FileServerTests/UnitTest1.cs +++ b/FileServerTests/UnitTest1.cs @@ -15,7 +15,17 @@ public class UnitTest1 { // Console.WriteLine("--- 127.0.0.1:8090 ---"); // var resp = await client.GetAsync("https://127.0.0.1:8090/hello"); - var resp = await client.GetAsync("https://api.hammer-hfut.tk:233/aics/file/hello"); + var content = new MultipartFormDataContent(); + content.Add(new StringContent("$5$mq5AaInP$veRAiN732QWi0JIChKnFpArb8LqvJJMBn4t/QBf4DB."), "ticket"); + content.Add(new StringContent("149"), "rangeStart"); + content.Add(new StringContent("297"), "rangeEnd"); + content.Add( + new StreamContent(File.OpenRead(@"C:\Users\arnor\Downloads\auto组第二次汇报.pptx")), + "file", + "file.txt" + ); + var resp = await client.PostAsync("https://api.hammer-hfut.tk:233/aics/file/File/8d7c236a-9518-4b57-a143-3fe040cf7954", content); + // var resp = await client.PostAsync("https://127.0.0.1:8081/File/8d7c236a-9518-4b57-a143-3fe040cf7954", content); var headers = new StringBuilder(); foreach (var (headerName, headerValues) in resp.Headers) { headers.AppendLine($"{headerName}: {string.Join(", ", headerValues)}");