Compare commits

..

No commits in common. "69cd60000e91a03acae244eb3c38b544e773212a" and "85f47330bd153e2832a7d867859fd4b222cf1419" have entirely different histories.

4 changed files with 6 additions and 11 deletions

View File

@ -19,10 +19,9 @@ public class FileController : ControllerBase {
public async Task<IActionResult> GetFileStatus(string fileId) { public async Task<IActionResult> GetFileStatus(string fileId) {
try { try {
var metadata = await _knowledgeFileHandler.GetFileMetadata(fileId); var metadata = await _knowledgeFileHandler.GetFileMetadata(fileId);
var existingRanges = (await _knowledgeFileHandler.GetAllPartFileRanges(fileId)) var existingRanges = await _knowledgeFileHandler.GetAllPartFileRanges(fileId);
.Select((range, _) => $"{range.Item1}-{range.Item2}");
return Ok(new FileStatus(metadata.IsCompleted, metadata.Md5, metadata.Size, existingRanges.ToList())); return Ok(new FileStatus(metadata.IsCompleted, metadata.Md5, metadata.Size, existingRanges));
} catch (FileNotFoundException) { } catch (FileNotFoundException) {
return NotFound(); return NotFound();
} }
@ -84,5 +83,5 @@ internal record FileStatus(
bool IsCompleted, bool IsCompleted,
string Md5, string Md5,
ulong Size, ulong Size,
List<string> ExistingRanges List<Tuple<ulong, ulong>> ExistingRanges
); );

View File

@ -20,11 +20,11 @@ public class KnowledgeFileHandler {
} }
public async Task<string[]> GetAllPartFiles(string fileId) { public async Task<string[]> GetAllPartFiles(string fileId) {
return Directory.GetFiles(FilePath, $"{fileId}.part.*"); return Directory.GetFiles($"{FilePath}/{fileId}.part.*");
} }
public Tuple<ulong, ulong> ConvertPartFileNameToRange(string fileName) { public Tuple<ulong, ulong> ConvertPartFileNameToRange(string fileName) {
var range = fileName.Split('.').Last().Split('-'); var range = fileName.Split('.')[2].Split('-');
return Tuple.Create(ulong.Parse(range[0]), ulong.Parse(range[1])); return Tuple.Create(ulong.Parse(range[0]), ulong.Parse(range[1]));
} }
@ -43,8 +43,7 @@ public class KnowledgeFileHandler {
} }
public async Task SaveFileSlice(string fileId, IFormFile file, ulong rangeStart, ulong rangeEnd) { public async Task SaveFileSlice(string fileId, IFormFile file, ulong rangeStart, ulong rangeEnd) {
await using var fileStream = File.Create(GetSliceFileName(fileId, rangeStart, rangeEnd)); await file.CopyToAsync(File.Create(GetSliceFileName(fileId, rangeStart, rangeEnd)));
await file.CopyToAsync(fileStream);
} }
/// <exception cref="InvalidDataException">缺失分片时抛出其Message内容是缺失分片的Range</exception> /// <exception cref="InvalidDataException">缺失分片时抛出其Message内容是缺失分片的Range</exception>

View File

@ -8,7 +8,6 @@ Directory.CreateDirectory("./files");
var builder = WebApplication.CreateBuilder(args); var builder = WebApplication.CreateBuilder(args);
builder.WebHost.UseUrls("https://*:8081"); builder.WebHost.UseUrls("https://*:8081");
builder.WebHost.UseKestrel((context, options) => { builder.WebHost.UseKestrel((context, options) => {
options.Limits.MaxRequestBodySize = 1073741824L;
options.ConfigureEndpointDefaults(listenOptions => { options.ConfigureEndpointDefaults(listenOptions => {
listenOptions.Protocols = HttpProtocols.Http1AndHttp2AndHttp3; listenOptions.Protocols = HttpProtocols.Http1AndHttp2AndHttp3;
listenOptions.UseHttps(builder.Configuration.GetSection(SslOptions.SectionName).Get<SslOptions>()! listenOptions.UseHttps(builder.Configuration.GetSection(SslOptions.SectionName).Get<SslOptions>()!

View File

@ -1,4 +1,2 @@
docker build -f .\AicsKnowledgeBase_file\Dockerfile -t auto/aics_file:latest . docker build -f .\AicsKnowledgeBase_file\Dockerfile -t auto/aics_file:latest .
echo 'saving...'
docker save -o ..\docker\aics_file.tar auto/aics_file:latest
pause pause