Browse Source

fix(oss): fixed oss container paging query problem

pull/333/head
cKey 4 years ago
parent
commit
bb0a48e2aa
  1. 44
      aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.FileSystem/LINGYUN/Abp/OssManagement/FileSystem/FileSystemOssContainer.cs
  2. 2
      aspnet-core/services/platform/LINGYUN.Platform.HttpApi.Host/Properties/launchSettings.json

44
aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.FileSystem/LINGYUN/Abp/OssManagement/FileSystem/FileSystemOssContainer.cs

@ -338,41 +338,43 @@ namespace LINGYUN.Abp.OssManagement.FileSystem
return x.CompareTo(y); return x.CompareTo(y);
}); });
var spiltDirectories = directories;
// 计算标记的位置进行截断 // 需要计算从哪个位置截断
int markIndex = 0;
if (!request.Marker.IsNullOrWhiteSpace()) if (!request.Marker.IsNullOrWhiteSpace())
{ {
var markIndex = directories.FindIndex(x => x.EndsWith(request.Marker)); markIndex = directories.FindIndex(x => x.EndsWith(request.Marker));
if (markIndex < 0) if (markIndex < 0)
{ {
directories = new string[0]; markIndex = 0;
}
else
{
var markDirectories = new string[directories.Length - markIndex];
Array.Copy(directories, markIndex, markDirectories, 0, markDirectories.Length);
directories = markDirectories;
} }
} }
// 需要截断最大的容器集合
if (request.MaxKeys.HasValue) var spiltDirectories = directories;
if (markIndex > 0)
{ {
spiltDirectories = directories.Take(request.MaxKeys ?? directories.Length).ToArray(); spiltDirectories = directories[markIndex..];
} }
var nextDirectory = spiltDirectories.Length < directories.Length ? directories[spiltDirectories.Length] : ""; // 截取指定数量的目录
if (!nextDirectory.IsNullOrWhiteSpace()) int maxResultCount = request.MaxKeys ?? 10;
// 容器对应的目录信息集合
var directoryInfos = spiltDirectories
.Take(maxResultCount)
.Select(file => new DirectoryInfo(file))
.ToArray();
var nextMarkerIndex = directories.FindIndex(x => x.EndsWith(directoryInfos[directoryInfos.Length - 1].Name));
string nextMarker = "";
if (nextMarkerIndex >= 0 && nextMarkerIndex + 1 < directories.Length)
{ {
// 下一个标记的目录名称 nextMarker = directories[nextMarkerIndex + 1];
nextMarker = new DirectoryInfo(nextMarker).Name;
nextDirectory = new DirectoryInfo(nextDirectory).Name;
} }
// 容器对应的目录信息集合
var directoryInfos = spiltDirectories.Select(x => new DirectoryInfo(x));
// 返回Oss容器描述集合 // 返回Oss容器描述集合
var response = new GetOssContainersResponse( var response = new GetOssContainersResponse(
request.Prefix, request.Prefix,
request.Marker, request.Marker,
nextDirectory, nextMarker,
directories.Length, directories.Length,
directoryInfos.Select(x => new OssContainer( directoryInfos.Select(x => new OssContainer(
x.Name, x.Name,

2
aspnet-core/services/platform/LINGYUN.Platform.HttpApi.Host/Properties/launchSettings.json

@ -13,7 +13,7 @@
"launchBrowser": false, "launchBrowser": false,
"applicationUrl": "http://localhost:30025", "applicationUrl": "http://localhost:30025",
"environmentVariables": { "environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development" "ASPNETCORE_ENVIRONMENT": "Production"
} }
} }
} }

Loading…
Cancel
Save