Compare commits

..

No commits in common. "04ef99dcc0a2cc53e106a249fa99ef74f751c2aa" and "9c4b4c85cb73343e11c2c964b594e061bcf250db" have entirely different histories.

1 changed files with 33 additions and 65 deletions

View File

@ -30,7 +30,6 @@ using Minio.Exceptions;
using System.Collections.Concurrent;
using System.Security.AccessControl;
using Microsoft.VisualBasic;
using SqlSugar;
namespace HeBianGu.App.Disk
{
@ -528,12 +527,10 @@ namespace HeBianGu.App.Disk
.WithEndpoint(config["Minio:Endpoint"])
.WithCredentials(config["Minio:AccessKey"], config["Minio:SecretKey"])
.Build();
string bucket = folderName;
if (string.IsNullOrWhiteSpace(folderName))
{
return;
}
if (!folderName.EndsWith("/"))
folderName += "/";
@ -541,32 +538,26 @@ namespace HeBianGu.App.Disk
{
var bucketName = GetCurrentBucket();
var prefix = GetCurrentPrefix();
if (!string.IsNullOrEmpty(bucketName))
{
var beArgs = new BucketExistsArgs().WithBucket(bucketName);
bool found = await client.BucketExistsAsync(beArgs);
if (!found)
{
var mbArgs = new MakeBucketArgs().WithBucket(bucketName);
await client.MakeBucketAsync(mbArgs);
}
using (var emptyStream = new MemoryStream(Encoding.UTF8.GetBytes(" ")))
{
await client.PutObjectAsync(
new PutObjectArgs()
.WithBucket(bucketName)
.WithObject(prefix + folderName)
.WithStreamData(emptyStream)
.WithObjectSize(1) // 必须设置为0
.WithContentType("application/x-directory"));
}
}
else
var beArgs = new BucketExistsArgs().WithBucket(bucketName);
bool found = await client.BucketExistsAsync(beArgs);
if (!found)
{
var mbArgs = new MakeBucketArgs().WithBucket(bucket);
var mbArgs = new MakeBucketArgs().WithBucket(bucketName);
await client.MakeBucketAsync(mbArgs);
}
using (var emptyStream = new MemoryStream(Encoding.UTF8.GetBytes(" ")))
{
await client.PutObjectAsync(
new PutObjectArgs()
.WithBucket(bucketName)
.WithObject(prefix + folderName)
.WithStreamData(emptyStream)
.WithObjectSize(1) // 必须设置为0
.WithContentType("application/x-directory"));
}
// 刷新当前目录
_explorerBehavior?.RefreshMinIOPath(CurrentMinIOPath);
}
@ -698,47 +689,24 @@ namespace HeBianGu.App.Disk
else if (item is MinIODirectoryModel dirModel)
{
var dirInfo = (MinIODirectoryInfo)dirModel.Model;
if (dirInfo.BucketName == dirInfo.FullName)
var folderPath = dirInfo.FullName.Substring(dirInfo.BucketName.Length + 1);
// 确保文件夹路径以斜杠结尾
if (!folderPath.EndsWith("/")) folderPath += "/";
// 获取文件夹下所有对象
var listArgs = new ListObjectsArgs()
.WithBucket(bucketName)
.WithPrefix(folderPath)
.WithRecursive(true);
await foreach (var obj in client.ListObjectsEnumAsync(listArgs))
{
// 获取文件夹下所有对象
var listArgs = new ListObjectsArgs()
.WithBucket(bucketName);
List<string> list = new List<string>();
await foreach (var obj in client.ListObjectsEnumAsync(listArgs))
{
list.Add(obj.Key);
}
if(list.Count > 0)
{
SelectedItems.Clear();
throw new Exception($"仅能删除空桶!");
}
else
{
await client.RemoveBucketAsync(new RemoveBucketArgs().WithBucket(dirInfo.BucketName));
}
objectsToDelete.Add(obj.Key);
}
else
{
var folderPath = dirInfo.FullName.Substring(dirInfo.BucketName.Length + 1);
// 确保文件夹路径以斜杠结尾
if (!folderPath.EndsWith("/")) folderPath += "/";
// 获取文件夹下所有对象
var listArgs = new ListObjectsArgs()
.WithBucket(bucketName)
.WithPrefix(folderPath)
.WithRecursive(true);
await foreach (var obj in client.ListObjectsEnumAsync(listArgs))
{
objectsToDelete.Add(obj.Key);
}
// 添加文件夹标记本身
objectsToDelete.Add(folderPath);
}
// 添加文件夹标记本身
objectsToDelete.Add(folderPath);
}
}