This commit is contained in:
itcsx committed 2026-09-13 19:01:48 +08:00
1 parent 7f5bf3c68d
commit 816209fc35
37 files changed
+3236 -4515

No files matched your search

@@ -82,7 +82,7 @@ namespace CloudBuilder.Master.Service
var webRootPath = service.Configuration[ServiceSettingsPolicy.RequestPath];
var phy = service.Configuration[ServiceSettingsPolicy.PhysicalFileDirectory];
var scale = service.Configuration[ServiceSettingsPolicy.DmsFileScaleDirectory].Replace(phy, "");
var scale = ServiceSettingsPolicy.GetDmsFileScaleDirectory(service).Replace(phy, "");
List<string> prvs = new List<string>();
//bool isAttached = Debugger.IsAttached;
foreach (var item in list)
@@ -150,7 +150,7 @@ namespace CloudBuilder.Master.Service
var webRootPath = service.Configuration[ServiceSettingsPolicy.RequestPath];
var phy = service.Configuration[ServiceSettingsPolicy.PhysicalFileDirectory];
var scale = service.Configuration[ServiceSettingsPolicy.DmsFileScaleDirectory].Replace(phy, "");
var scale = ServiceSettingsPolicy.GetDmsFileScaleDirectory(service).Replace(phy, "");
List<string> prvs = new List<string>();
//bool isAttached = Debugger.IsAttached;
foreach (var item in list)
@@ -215,7 +215,7 @@ namespace CloudBuilder.Master.Service
var webRootPath = service.Configuration[ServiceSettingsPolicy.RequestPath];
var phy = service.Configuration[ServiceSettingsPolicy.PhysicalFileDirectory];
var scale = service.Configuration[ServiceSettingsPolicy.DmsFileScaleDirectory].Replace(phy, "");
var scale = ServiceSettingsPolicy.GetDmsFileScaleDirectory(service).Replace(phy, "");
foreach (var item in list)
{
@@ -314,7 +314,7 @@ namespace CloudBuilder.Master.Service
var webRootPath = service.Configuration[ServiceSettingsPolicy.RequestPath];
var phy = service.Configuration[ServiceSettingsPolicy.PhysicalFileDirectory];
var scale = service.Configuration[ServiceSettingsPolicy.DmsFileScaleDirectory].Replace(phy, "");
var scale = ServiceSettingsPolicy.GetDmsFileScaleDirectory(service).Replace(phy, "");
foreach (var item in list)
@@ -1140,7 +1140,109 @@ namespace CloudBuilder.Master.Service
string filePath = null;
if (httpContextAccessor.HttpContext.Request.Headers.ContainsKey("FilePath"))
filePath = httpContextAccessor.HttpContext.Request.Headers["FilePath"].ToString();
dmsFile = PackUploadFile(file, filePath);
PackUploadFile(file, filePath);
break;
}
}
}
public void PackUploadFile(IFormFile file, string folderName)
{
var uploadFileRootPath = ServiceSettingsPolicy.GetUploadFileDirectory(service);
//文件后缀
var fileExtension = Path.GetExtension(file.Name.Replace(" ", "")).ToLower();//获取文件格式,拓展名
if (string.IsNullOrEmpty(fileExtension)) fileExtension = "ext";
var filePath = Path.Combine(folderName, fileExtension.Replace(".", ""), "");
//创建存储文件夹
if (!Directory.Exists(Path.Combine(uploadFileRootPath, filePath)))
{
Directory.CreateDirectory(Path.Combine(uploadFileRootPath, filePath));
}
//判断文件大小
var fileSize = file.Length;
if (fileSize > 1024 * 1024 * 100) //100M TODO:(1mb=1024X1024b)
{
return;
}
//保存的文件名称
string fullName = Path.Combine(uploadFileRootPath, filePath, file.FileName);
if (File.Exists(fullName)) File.Delete(fullName);
//文件保存
using (var fs = System.IO.File.Create(fullName))
{
file.CopyTo(fs);
fs.Flush();
}
//FileName上传Uid:xxxx-1-1.xxx
string[] fns = file.FileName.Split('-');
//如果上传的不是最后一个分片
if (fns[fns.Length - 2] != fns[fns.Length - 1].Split('.')[0])
{
return;
}
else
{
string backupRootPath = ServiceSettingsPolicy.GetBackupFileDirectory(service);
string backupFileName = Path.Combine(backupRootPath, filePath, file.FileName);
if (!Directory.Exists(Path.Combine(backupRootPath, filePath)))
{
Directory.CreateDirectory(Path.Combine(backupRootPath, filePath));
}
if (fns[fns.Length - 1].Split('.')[0] == "1")
{
if (File.Exists(backupFileName)) File.Delete(backupFileName);
File.Copy(fullName, backupFileName, true);
}
else//合并文件
{
List<byte[]> all = new List<byte[]>();
List<string> fileNames = new List<string>();
//文件分片从1开始
for (int i = 1; i <= Convert.ToInt32(fns[fns.Length - 1].Split('.')[0]); i++)
{
fns[fns.Length - 2] = i.ToString();
fileNames.Add(Path.Combine(uploadFileRootPath, filePath, fns.ToDelimiteredList('-')));
}
if (File.Exists(backupFileName)) File.Delete(backupFileName);
using (FileStream outputFile = File.Create(backupFileName)) // 创建输出文件流
{
foreach (string fileName in fileNames)
{
byte[] buffer = File.ReadAllBytes(fileName); // 读取每个文件内容到字节数组
outputFile.Write(buffer, 0, buffer.Length); // 将字节数组写入输出文件流
}
}
}
}
}
[PermissionOperate(name: MasterPermissionPolicy.DmsFile, operate: Operate.Insert)]
[UnitOfWork]
public void UploadDmsFile()
{
//采用分片上传文件(以及后面分片下载)
DmsFileEntity dmsFile = null;
var files = httpContextAccessor.HttpContext.Request.Form.Files;
var currentDate = DateTime.Now;
if (files.Any())
{
foreach (var file in files)
{
string filePath = null;
if (httpContextAccessor.HttpContext.Request.Headers.ContainsKey("FilePath"))
filePath = httpContextAccessor.HttpContext.Request.Headers["FilePath"].ToString();
dmsFile = PackUploadDmsFile(file, filePath);
break;
}
}
@@ -1151,9 +1253,9 @@ namespace CloudBuilder.Master.Service
}
}
public DmsFileEntity PackUploadFile(IFormFile file, string folderName)
public DmsFileEntity PackUploadDmsFile(IFormFile file, string folderName)
{
var webRootPath = service.Configuration[ServiceSettingsPolicy.DmsFileUploadDirectory];
var webRootPath = ServiceSettingsPolicy.GetDmsFileUploadDirectory(service);
DmsFileEntity dmsFile = new DmsFileEntity();
dmsFile.OrgFileName = file.Name.Replace(" ", "");
dmsFile.FilePath = folderName;
@@ -1199,7 +1301,7 @@ namespace CloudBuilder.Master.Service
dmsFile.OrderKey = file.FileName;
dmsFile.FileName = file.FileName;
dmsFile.FileSize = Convert.ToInt32(fileSize / 1024);
var backupRootPath = service.Configuration[ServiceSettingsPolicy.DmsFileBackupDirectory];
var backupRootPath = ServiceSettingsPolicy.GetDmsFileBackupDirectory(service);
string backupName = Path.Combine(backupRootPath, filePath, dmsFile.FileName);
if (!Directory.Exists(Path.Combine(backupRootPath, filePath)))
{
@@ -1225,7 +1327,7 @@ namespace CloudBuilder.Master.Service
fileNames.Add(Path.Combine(webRootPath, filePath, fns.ToDelimiteredList('-')));
}
dmsFile.FileName = Path.GetFileName(fullName);
var backupRootPath = service.Configuration[ServiceSettingsPolicy.DmsFileBackupDirectory];
var backupRootPath = ServiceSettingsPolicy.GetDmsFileBackupDirectory(service);
fullName = Path.Combine(backupRootPath, filePath, dmsFile.FileName);
if (!Directory.Exists(Path.Combine(backupRootPath, filePath)))
@@ -1328,7 +1430,7 @@ namespace CloudBuilder.Master.Service
// 仅修改这一行,替换硬编码反斜杠字符串拼接
var filePath = Path.Combine(service.UserId, fileExtension.Replace(".", ""), "");
// 这里同步改成Path.Combine,不要直接+字符串拼接
string saveName = Path.Combine(service.Configuration[ServiceSettingsPolicy.DmsFileScaleDirectory], filePath, dmsFile.OrderKey);
string saveName = Path.Combine(ServiceSettingsPolicy.GetDmsFileScaleDirectory(service), filePath, dmsFile.OrderKey);
if (!Directory.Exists(Path.GetDirectoryName(saveName)))
{
@@ -1518,7 +1620,7 @@ namespace CloudBuilder.Master.Service
[PermissionOperate(name: MasterPermissionPolicy.DmsFile, operate: Operate.Find)]
public dynamic DownloadFilePreview(DmsFileEntity dmsFile)
{
var webRootPath = service.Configuration[ServiceSettingsPolicy.DmsFileScaleDirectory];
var webRootPath = ServiceSettingsPolicy.GetDmsFileScaleDirectory(service);
var fileExtension = Path.GetExtension(dmsFile.OrderKey);
var filePath = Path.Combine(dmsFile.CreatedBy, fileExtension.Replace(".", ""), "");
@@ -1538,7 +1640,7 @@ namespace CloudBuilder.Master.Service
[PermissionOperate(name: MasterPermissionPolicy.DmsFile, operate: Operate.Find)]
public dynamic DownloadFileCombine(string fileName)
{
var webRootPath = service.Configuration[ServiceSettingsPolicy.DmsFileUploadDirectory];
var webRootPath = ServiceSettingsPolicy.GetDmsFileUploadDirectory(service);
var fileExtension = Path.GetExtension(fileName);
var filePath = Path.Combine(service.UserId, fileExtension.Replace(".", ""), "");
@@ -1615,7 +1717,7 @@ namespace CloudBuilder.Master.Service
{
IRepository<DmsFolderMapEntity> repositoryFolderMap = repository.GetRepository<IRepository<DmsFolderMapEntity>>();
return repositoryFolderMap.DetachedEntities.Where(x => x.FolderNameSon == folderName).Count();
return repositoryFolderMap.DetachedEntities.Where(x => x.FolderNameParent == folderName).Count();
}
[PermissionOperate(name: MasterPermissionPolicy.DmsFile, operate: Operate.Find)]