[FrontedWebApi][File] 下載檔案程序建置 | [圖資管理] 編輯時刪除檔案判斷調整
This commit is contained in:
		
							parent
							
								
									d4d0c4d7b2
								
							
						
					
					
						commit
						1d3b601cc1
					
				
							
								
								
									
										64
									
								
								FrontendWebApi/ApiControllers/FileController.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										64
									
								
								FrontendWebApi/ApiControllers/FileController.cs
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,64 @@
 | 
				
			|||||||
 | 
					using Microsoft.AspNetCore.Http;
 | 
				
			||||||
 | 
					using Microsoft.AspNetCore.Mvc;
 | 
				
			||||||
 | 
					using Repository.BackendRepository.Interface;
 | 
				
			||||||
 | 
					using Repository.FrontendRepository.Interface;
 | 
				
			||||||
 | 
					using System;
 | 
				
			||||||
 | 
					using System.IO;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					namespace FrontendWebApi.ApiControllers
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    public class FileController : MyBaseApiController<GraphManageController>
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        private readonly IBackendRepository backendRepository;
 | 
				
			||||||
 | 
					        private readonly IFrontendRepository frontendRepository;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        private string graphManageFileSaveAsPath = "";
 | 
				
			||||||
 | 
					        private string operationFileSaveAsPath = "";
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public FileController(IBackendRepository backendRepository, IFrontendRepository frontendRepository)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            this.backendRepository = backendRepository;
 | 
				
			||||||
 | 
					            this.frontendRepository = frontendRepository;
 | 
				
			||||||
 | 
					            graphManageFileSaveAsPath = Path.Combine(Directory.GetCurrentDirectory(), "wwwroot", "upload", "graph_manage");
 | 
				
			||||||
 | 
					            operationFileSaveAsPath = Path.Combine(Directory.GetCurrentDirectory(), "wwwroot", "upload", "operation");
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        public bool Download([FromQuery]string type , string savename, string oriname)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            var path = "";
 | 
				
			||||||
 | 
					            if (type == "graph")
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                path = Path.Combine(graphManageFileSaveAsPath, savename);
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            else if (type == "operation") 
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                path = Path.Combine(operationFileSaveAsPath, savename);
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            if (System.IO.File.Exists(path) && path != "")
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                try
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    FileInfo xpath_file = new FileInfo(path);  //要 using System.IO;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    // 將傳入的檔名以 FileInfo 來進行解析(只以字串無法做)
 | 
				
			||||||
 | 
					                    HttpContext.Response.Clear(); //清除buffer
 | 
				
			||||||
 | 
					                    HttpContext.Response.ContentType = "application/octet-stream";
 | 
				
			||||||
 | 
					                    // 檔案類型還有下列幾種"application/pdf"、"application/vnd.ms-excel"、"text/xml"、"text/HTML"、"image/JPEG"、"image/GIF"
 | 
				
			||||||
 | 
					                    HttpContext.Response.Headers.Add("Content-Disposition", "attachment;filename=" + System.Web.HttpUtility.UrlEncode(oriname, System.Text.Encoding.UTF8));
 | 
				
			||||||
 | 
					                    // 考慮 utf-8 檔名問題,以 out_file 設定另存的檔名
 | 
				
			||||||
 | 
					                    HttpContext.Response.Headers.Add("Content-Length", xpath_file.Length.ToString()); //表頭加入檔案大小
 | 
				
			||||||
 | 
					                    HttpContext.Response.SendFileAsync(xpath_file.FullName);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    return true;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					                catch (Exception)
 | 
				
			||||||
 | 
					                { return false; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            else
 | 
				
			||||||
 | 
					                return false;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -7,6 +7,7 @@ using System.Collections.Generic;
 | 
				
			|||||||
using System.Threading.Tasks;
 | 
					using System.Threading.Tasks;
 | 
				
			||||||
using System;
 | 
					using System;
 | 
				
			||||||
using System.Linq;
 | 
					using System.Linq;
 | 
				
			||||||
 | 
					using System.Web;
 | 
				
			||||||
using Repository.BackendRepository.Interface;
 | 
					using Repository.BackendRepository.Interface;
 | 
				
			||||||
using Repository.FrontendRepository.Interface;
 | 
					using Repository.FrontendRepository.Interface;
 | 
				
			||||||
using System.IO;
 | 
					using System.IO;
 | 
				
			||||||
@ -149,7 +150,7 @@ namespace FrontendWebApi.ApiControllers
 | 
				
			|||||||
                                    WHERE gm.id = @id
 | 
					                                    WHERE gm.id = @id
 | 
				
			||||||
                                    ORDER BY gm.priority, gm.created_at desc";
 | 
					                                    ORDER BY gm.priority, gm.created_at desc";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                var param = new { @id = gi.id , @graph_manage_layer1 = graph_manage_layer1, @graph_manage_layer2 = graph_manage_layer2 };
 | 
					                var param = new { @id = gi.id, @graph_manage_layer1 = graph_manage_layer1, @graph_manage_layer2 = graph_manage_layer2 };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                graManList = await backendRepository.GetOneAsync<GraphList>(sqlString, param);
 | 
					                graManList = await backendRepository.GetOneAsync<GraphList>(sqlString, param);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -232,14 +233,14 @@ namespace FrontendWebApi.ApiControllers
 | 
				
			|||||||
                //原設計圖修改
 | 
					                //原設計圖修改
 | 
				
			||||||
                var new_guid = Guid.NewGuid();
 | 
					                var new_guid = Guid.NewGuid();
 | 
				
			||||||
                //刪除原本檔案
 | 
					                //刪除原本檔案
 | 
				
			||||||
                if (gm.oriSavName != null)
 | 
					                if (gm.oriSavName != null && gii.oriOrgName == null)
 | 
				
			||||||
                {
 | 
					                {
 | 
				
			||||||
                    FolderFunction folderFunction = new FolderFunction();
 | 
					                    FolderFunction folderFunction = new FolderFunction();
 | 
				
			||||||
                    folderFunction.DeleteFile(Path.Combine(graphManageFileSaveAsPath, gm.oriSavName));
 | 
					                    folderFunction.DeleteFile(Path.Combine(graphManageFileSaveAsPath, gm.oriSavName));
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                string fileName = null;
 | 
					                string fileName = null;
 | 
				
			||||||
                if (gii.oriOrgName != null)
 | 
					                if (gii.oriOrgName != null && gii.oriFile != null)
 | 
				
			||||||
                {
 | 
					                {
 | 
				
			||||||
                    fileName = new_guid + "." + gii.oriOrgName.Split('.')[1];
 | 
					                    fileName = new_guid + "." + gii.oriOrgName.Split('.')[1];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -257,13 +258,13 @@ namespace FrontendWebApi.ApiControllers
 | 
				
			|||||||
                //竣工圖修改
 | 
					                //竣工圖修改
 | 
				
			||||||
                new_guid = Guid.NewGuid();
 | 
					                new_guid = Guid.NewGuid();
 | 
				
			||||||
                //刪除原本檔案
 | 
					                //刪除原本檔案
 | 
				
			||||||
                if (gm.donSavName != null)
 | 
					                if (gm.donSavName != null && gii.donOrgName == null)
 | 
				
			||||||
                {
 | 
					                {
 | 
				
			||||||
                    var folderFunction = new FolderFunction();
 | 
					                    var folderFunction = new FolderFunction();
 | 
				
			||||||
                    folderFunction.DeleteFile(Path.Combine(graphManageFileSaveAsPath, gm.donSavName));
 | 
					                    folderFunction.DeleteFile(Path.Combine(graphManageFileSaveAsPath, gm.donSavName));
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                if (gii.donOrgName != null)
 | 
					                if (gii.donOrgName != null && gii.donFile != null)
 | 
				
			||||||
                {
 | 
					                {
 | 
				
			||||||
                    fileName = new_guid + "." + gii.donOrgName.Split('.')[1];
 | 
					                    fileName = new_guid + "." + gii.donOrgName.Split('.')[1];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -369,7 +370,7 @@ namespace FrontendWebApi.ApiControllers
 | 
				
			|||||||
                graph_manage.Add("@name", gii.name);
 | 
					                graph_manage.Add("@name", gii.name);
 | 
				
			||||||
                graph_manage.Add("@deleted", 0);
 | 
					                graph_manage.Add("@deleted", 0);
 | 
				
			||||||
                graph_manage.Add("@priority", newPriority + 1);
 | 
					                graph_manage.Add("@priority", newPriority + 1);
 | 
				
			||||||
                graph_manage.Add("@created_by", myUser.userinfo_guid    );
 | 
					                graph_manage.Add("@created_by", myUser.userinfo_guid);
 | 
				
			||||||
                graph_manage.Add("@created_at", DateTime.Now);
 | 
					                graph_manage.Add("@created_at", DateTime.Now);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                await backendRepository.AddOneByCustomTable(graph_manage, "graph_manage");
 | 
					                await backendRepository.AddOneByCustomTable(graph_manage, "graph_manage");
 | 
				
			||||||
@ -387,5 +388,6 @@ namespace FrontendWebApi.ApiControllers
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
            return apiResult;
 | 
					            return apiResult;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@ -7,8 +7,8 @@
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
  "JwtSettings": {
 | 
					  "JwtSettings": {
 | 
				
			||||||
    "Issuer": "Admin", //發送者
 | 
					    "Issuer": "Admin", //<EFBFBD>o<EFBFBD>e<EFBFBD><EFBFBD>
 | 
				
			||||||
    "SignKey": "TaipeiDome123456", //簽章//最少16字元
 | 
					    "SignKey": "TaipeiDome123456", //ñ<EFBFBD><EFBFBD>//<EFBFBD>̤<EFBFBD>16<EFBFBD>r<EFBFBD><EFBFBD>
 | 
				
			||||||
    "JwtLifeSeconds": 1800
 | 
					    "JwtLifeSeconds": 1800
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
  "DBConfig": {
 | 
					  "DBConfig": {
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
		Reference in New Issue
	
	Block a user