From 361e8babc2e2b25eab34d8031ea3b58846498bac Mon Sep 17 00:00:00 2001
From: qwj <qwjzorro@163.com>
Date: 星期三, 02 八月 2023 17:04:01 +0800
Subject: [PATCH] 更新文件服务

---
 DocumentFile.Service/IUploadService.cs                 |   47 ++++++++++++++++-------
 DocumentFile.Service/Controllers/DocumentController.cs |   57 +++++++++++++++++++++++++---
 DocumentServiceAPI.sln                                 |   12 ++++-
 3 files changed, 93 insertions(+), 23 deletions(-)

diff --git a/DocumentFile.Service/Controllers/DocumentController.cs b/DocumentFile.Service/Controllers/DocumentController.cs
index 7fa7452..57da744 100644
--- a/DocumentFile.Service/Controllers/DocumentController.cs
+++ b/DocumentFile.Service/Controllers/DocumentController.cs
@@ -20,16 +20,58 @@
         }
 
         /// <summary>
-        /// 涓婁紶鏂囦欢锛坵ord锛�
+        /// 涓婁紶鏂囦欢妯℃澘锛坉oc銆乨ocx锛�
         /// </summary>
+        /// <param name="code">绉熸埛鍞竴鏍囪瘑code</param>
+        /// <param name="formFile">鏂囦欢</param>
         /// <returns></returns>
         [HttpPost]
-        public async Task<IActionResult> UploadDocument(IFormFile formFile)
+        public async Task<IActionResult> UploadDocTemplate([FromForm]string code,IFormFile formFile)
         {
             ReturnMsg msg = new ReturnMsg();
             if(formFile.Length>0)
             {
-                msg = await this._uploadService.HandleUploadWordFile(formFile);                
+                msg = await this._uploadService.HandleUploadTemplateFile(formFile,code);                
+            }
+            else
+            {
+                msg.error = "璇蜂笂浼犳枃浠�";
+            }
+
+            return new JsonResult(msg);
+        }
+
+        /// <summary>
+        /// 涓婁紶鏂囦欢锛坉oc銆乨ocx锛�
+        /// </summary>
+        /// <returns></returns>
+        [HttpPost]
+        public async Task<IActionResult> UploadDocInstance([FromForm] string code, IFormFile formFile)
+        {
+            ReturnMsg msg = new ReturnMsg();
+            if (formFile.Length > 0)
+            {
+                msg = await this._uploadService.HandleUploadWordFile(formFile, code);
+            }
+            else
+            {
+                msg.error = "璇蜂笂浼犳枃浠�";
+            }
+
+            return new JsonResult(msg);
+        }
+
+        /// <summary>
+        /// 涓婁紶鍥剧墖锛坖pg銆乯peg銆乸ng锛�
+        /// </summary>
+        /// <returns></returns>
+        [HttpPost]
+        public async Task<IActionResult> UploadPhoto([FromForm] string code, IFormFile formFile)
+        {
+            ReturnMsg msg = new ReturnMsg();
+            if (formFile.Length > 0)
+            {
+                msg = await this._uploadService.HandleUploadImageFile(formFile, code);
             }
             else
             {
@@ -45,15 +87,18 @@
         /// <param name="url"></param>
         /// <returns></returns>
         [HttpPost]
-        public IActionResult Download([FromBody] string url)
+        public IActionResult Download([FromForm] string url)
         {
             try
             {
                 if (!string.IsNullOrEmpty(url))
                 {
                     var _webRootPath = AppDomain.CurrentDomain.BaseDirectory;
-
-                    return new FileStreamResult(new FileStream(_webRootPath + url, FileMode.Open), "application/octet-stream");// { FileDownloadName = FileName };
+                    var path = _webRootPath + url;
+                    if (System.IO.File.Exists(path))
+                    {
+                        return new FileStreamResult(new FileStream(path, FileMode.Open), "application/octet-stream");// { FileDownloadName = FileName };
+                    }
                 }
             }
             catch (Exception ex)
diff --git a/DocumentFile.Service/IUploadService.cs b/DocumentFile.Service/IUploadService.cs
index 9d91a2c..24834ea 100644
--- a/DocumentFile.Service/IUploadService.cs
+++ b/DocumentFile.Service/IUploadService.cs
@@ -4,11 +4,11 @@
 {
     public interface IUploadService
     {
-        Task<ReturnMsg> HandleUploadWordFile(IFormFile iFormFile);
+        Task<ReturnMsg> HandleUploadWordFile(IFormFile iFormFile,string code);
 
-        Task<ReturnMsg> HandleUploadTemplateFile(IFormFile iFormFile);
+        Task<ReturnMsg> HandleUploadTemplateFile(IFormFile iFormFile, string code);
 
-        Task<ReturnMsg> HandleUploadImageFile(IFormFile iFormFile);
+        Task<ReturnMsg> HandleUploadImageFile(IFormFile iFormFile, string code);
 
         //(string fileType, byte[] archiveData, string archiveName) DownloadFiles(string subDirectory);
 
@@ -27,10 +27,11 @@
         /// 涓婁紶鏂囦欢 杈呭姪鍑芥暟
         /// </summary>
         /// <param name="formFile"></param>
-        /// <param name="folder"></param>
+        /// <param name="tenant">鏂囦欢澶瑰鎴锋爣璇�</param>
+        /// <param name="folder">鏂囦欢澶瑰垎绫绘爣绛�</param>
         /// <param name="format"></param>
         /// <returns></returns>
-        protected async virtual Task<ReturnMsg> HandleUploadFile(IFormFile formFile, string folder, params string[] format)
+        protected async virtual Task<ReturnMsg> HandleUploadFile(IFormFile formFile,string tenant, string folder, params string[] format)
         {
             ReturnMsg msg = new ReturnMsg();
 
@@ -44,15 +45,14 @@
                 }
                 else
                 {
-                    var path = $"/upload/{folder}/{DateTime.Now:yyyyMMdd}";
+                    var path = $"/uploads/{tenant}/{folder}/{DateTime.Now:yyyyMMdd}";
                     var dir = this._webRootPath + path;
                     if (!Directory.Exists(dir))
                     {
                         Directory.CreateDirectory(dir);
                     }
 
-                    var filename = $"ZC_{DateTime.Now:HHmmssfff}" + extensionName;
-
+                    var filename = CreateName(path,extensionName);                    
                     path += "/" + filename;
                                         
                     // 鍒涘缓鏂版枃浠�
@@ -75,6 +75,25 @@
             return msg;
         }
 
+        /// <summary>
+        /// 鐢熸垚鍞竴鐨勬枃浠跺悕
+        /// </summary>
+        /// <param name="path"></param>
+        /// <param name="extensionName"></param>
+        /// <returns></returns>
+        private string CreateName(string path,string extensionName)
+        {
+            var filename = $"ZC_{DateTime.Now:HHmmssfff}" + extensionName;
+            if (File.Exists(path + "/" + filename))
+            {
+                return CreateName(path, extensionName);
+            }
+            else
+            {
+                return filename;
+            }
+        }
+
 
         /// <summary>
         /// 涓婁紶word鏂囦欢
@@ -82,8 +101,8 @@
         /// <param name="iFormFile"></param>
         /// <param name="format"></param>
         /// <returns></returns>
-        public async virtual Task<ReturnMsg> HandleUploadWordFile(IFormFile iFormFile)
-            => await this.HandleUploadFile(iFormFile, "Instance", ".doc",".docx");
+        public async virtual Task<ReturnMsg> HandleUploadWordFile(IFormFile iFormFile, string code)
+            => await this.HandleUploadFile(iFormFile,code, "Instance", ".doc",".docx");
 
         /// <summary>
         /// 涓婁紶word妯℃澘鏂囦欢
@@ -91,8 +110,8 @@
         /// <param name="iFormFile"></param>
         /// <param name="format"></param>
         /// <returns></returns>
-        public async virtual Task<ReturnMsg> HandleUploadTemplateFile(IFormFile iFormFile)
-            => await this.HandleUploadFile(iFormFile, "Template", ".doc", ".docx");
+        public async virtual Task<ReturnMsg> HandleUploadTemplateFile(IFormFile iFormFile, string code)
+            => await this.HandleUploadFile(iFormFile, code, "Template", ".doc", ".docx");
 
         /// <summary>
         /// 涓婁紶鍥剧墖
@@ -100,8 +119,8 @@
         /// <param name="iFormFile"></param>
         /// <param name="folder"></param>
         /// <returns></returns>
-        public async virtual Task<ReturnMsg> HandleUploadImageFile(IFormFile iFormFile)
-            => await this.HandleUploadFile(iFormFile, "Photo", ".jpg", ".jpeg", ".png");
+        public async virtual Task<ReturnMsg> HandleUploadImageFile(IFormFile iFormFile, string code)
+            => await this.HandleUploadFile(iFormFile, code, "Photo", ".jpg", ".jpeg", ".png");
         /*, ".gif", ".jfif"*/
 
         ///// <summary>
diff --git a/DocumentServiceAPI.sln b/DocumentServiceAPI.sln
index 6cb101d..aa26889 100644
--- a/DocumentServiceAPI.sln
+++ b/DocumentServiceAPI.sln
@@ -11,11 +11,13 @@
 EndProject
 Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "DocumentServiceAPI.Web.Entry", "DocumentServiceAPI.Web.Entry\DocumentServiceAPI.Web.Entry.csproj", "{C8D99F52-EDC7-411F-8300-6DB14BF59E8C}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DocumentServiceAPI.Model", "DocumentServiceAPI.Model\DocumentServiceAPI.Model.csproj", "{80D04681-B259-46CC-BC3B-36DB3185038D}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "DocumentServiceAPI.Model", "DocumentServiceAPI.Model\DocumentServiceAPI.Model.csproj", "{80D04681-B259-46CC-BC3B-36DB3185038D}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DocumentServiceAPI.Enum", "DocumentServiceAPI.Enum\DocumentServiceAPI.Enum.csproj", "{69964B25-DFB3-4AF2-9AC7-9BB2A4880D19}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "DocumentServiceAPI.Enum", "DocumentServiceAPI.Enum\DocumentServiceAPI.Enum.csproj", "{69964B25-DFB3-4AF2-9AC7-9BB2A4880D19}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DocumentServiceAPI.Utility", "DocumentServiceAPI.Utility\DocumentServiceAPI.Utility.csproj", "{32288D91-01F9-45B0-AA01-A8EF1E22A6D0}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "DocumentServiceAPI.Utility", "DocumentServiceAPI.Utility\DocumentServiceAPI.Utility.csproj", "{32288D91-01F9-45B0-AA01-A8EF1E22A6D0}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "DocumentFile.Service", "DocumentFile.Service\DocumentFile.Service.csproj", "{F3449EF6-8E3F-492F-832F-F5F2E1F2503C}"
 EndProject
 Global
 	GlobalSection(SolutionConfigurationPlatforms) = preSolution
@@ -51,6 +53,10 @@
 		{32288D91-01F9-45B0-AA01-A8EF1E22A6D0}.Debug|Any CPU.Build.0 = Debug|Any CPU
 		{32288D91-01F9-45B0-AA01-A8EF1E22A6D0}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{32288D91-01F9-45B0-AA01-A8EF1E22A6D0}.Release|Any CPU.Build.0 = Release|Any CPU
+		{F3449EF6-8E3F-492F-832F-F5F2E1F2503C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{F3449EF6-8E3F-492F-832F-F5F2E1F2503C}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{F3449EF6-8E3F-492F-832F-F5F2E1F2503C}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{F3449EF6-8E3F-492F-832F-F5F2E1F2503C}.Release|Any CPU.Build.0 = Release|Any CPU
 	EndGlobalSection
 	GlobalSection(SolutionProperties) = preSolution
 		HideSolutionNode = FALSE

--
Gitblit v1.9.1