From c6367454219071019cba72cdd63634106e270bcb Mon Sep 17 00:00:00 2001 From: Lucio Maranta Date: Tue, 19 Jun 2018 17:06:03 +0200 Subject: [PATCH] Fix maintenance attachments API --- .../Controllers/MaintenancesController.cs | 5 +- ...201806191402402_InitMigration.Designer.cs} | 2 +- ...on.cs => 201806191402402_InitMigration.cs} | 1 + ...esx => 201806191402402_InitMigration.resx} | 2 +- Step.Database/Step.Database.csproj | 10 ++-- .../DatabaseModels/MaintenanceFileModel.cs | 3 ++ .../WebApi/MaintenanceController.cs | 47 +++++++++++-------- 7 files changed, 41 insertions(+), 29 deletions(-) rename Step.Database/Migrations/{201806180938301_InitMigration.Designer.cs => 201806191402402_InitMigration.Designer.cs} (92%) rename Step.Database/Migrations/{201806180938301_InitMigration.cs => 201806191402402_InitMigration.cs} (99%) rename Step.Database/Migrations/{201806180938301_InitMigration.resx => 201806191402402_InitMigration.resx} (61%) diff --git a/Step.Database/Controllers/MaintenancesController.cs b/Step.Database/Controllers/MaintenancesController.cs index 1b0751ef..5ac97d2a 100644 --- a/Step.Database/Controllers/MaintenancesController.cs +++ b/Step.Database/Controllers/MaintenancesController.cs @@ -283,11 +283,12 @@ namespace Step.Database.Controllers .FirstOrDefault(); } - public MaintenanceFileModel AddAttachment(string fileName, int maintenanceId) + public MaintenanceFileModel AddAttachment(string fileName, string localFileName ,int maintenanceId) { MaintenanceFileModel file = new MaintenanceFileModel() { - FileName = fileName, + FileName = fileName, + LocalFileName = localFileName, MaintenanceId = maintenanceId }; diff --git a/Step.Database/Migrations/201806180938301_InitMigration.Designer.cs b/Step.Database/Migrations/201806191402402_InitMigration.Designer.cs similarity index 92% rename from Step.Database/Migrations/201806180938301_InitMigration.Designer.cs rename to Step.Database/Migrations/201806191402402_InitMigration.Designer.cs index 0561631c..143a5daf 100644 --- a/Step.Database/Migrations/201806180938301_InitMigration.Designer.cs +++ b/Step.Database/Migrations/201806191402402_InitMigration.Designer.cs @@ -13,7 +13,7 @@ namespace Step.Database.Migrations string IMigrationMetadata.Id { - get { return "201806180938301_InitMigration"; } + get { return "201806191402402_InitMigration"; } } string IMigrationMetadata.Source diff --git a/Step.Database/Migrations/201806180938301_InitMigration.cs b/Step.Database/Migrations/201806191402402_InitMigration.cs similarity index 99% rename from Step.Database/Migrations/201806180938301_InitMigration.cs rename to Step.Database/Migrations/201806191402402_InitMigration.cs index 329ce3cc..46905423 100644 --- a/Step.Database/Migrations/201806180938301_InitMigration.cs +++ b/Step.Database/Migrations/201806191402402_InitMigration.cs @@ -77,6 +77,7 @@ namespace Step.Database.Migrations { id = c.Int(nullable: false, identity: true), file_name = c.String(unicode: false), + local_file_name = c.String(unicode: false), maintenance_id = c.Int(nullable: false), }) .PrimaryKey(t => t.id) diff --git a/Step.Database/Migrations/201806180938301_InitMigration.resx b/Step.Database/Migrations/201806191402402_InitMigration.resx similarity index 61% rename from Step.Database/Migrations/201806180938301_InitMigration.resx rename to Step.Database/Migrations/201806191402402_InitMigration.resx index 0d26c46d..758334fd 100644 --- a/Step.Database/Migrations/201806180938301_InitMigration.resx +++ b/Step.Database/Migrations/201806191402402_InitMigration.resx @@ -118,7 +118,7 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - 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 dbo diff --git a/Step.Database/Step.Database.csproj b/Step.Database/Step.Database.csproj index c8f69adb..acc8a298 100644 --- a/Step.Database/Step.Database.csproj +++ b/Step.Database/Step.Database.csproj @@ -77,9 +77,9 @@ - - - 201806180938301_InitMigration.cs + + + 201806191402402_InitMigration.cs @@ -115,8 +115,8 @@ - - 201806180938301_InitMigration.cs + + 201806191402402_InitMigration.cs diff --git a/Step.Model/DatabaseModels/MaintenanceFileModel.cs b/Step.Model/DatabaseModels/MaintenanceFileModel.cs index cdefa067..3d0e8bcb 100644 --- a/Step.Model/DatabaseModels/MaintenanceFileModel.cs +++ b/Step.Model/DatabaseModels/MaintenanceFileModel.cs @@ -18,6 +18,9 @@ namespace Step.Model.DatabaseModels [Column("file_name")] public string FileName { get; set; } + [Column("local_file_name")] + public string LocalFileName { get; set; } + [Column("maintenance_id")] public int MaintenanceId { get; set; } diff --git a/Step/Controllers/WebApi/MaintenanceController.cs b/Step/Controllers/WebApi/MaintenanceController.cs index c81a6117..226c92b3 100644 --- a/Step/Controllers/WebApi/MaintenanceController.cs +++ b/Step/Controllers/WebApi/MaintenanceController.cs @@ -1,4 +1,5 @@ -using Step.Database.Controllers; +using Newtonsoft.Json; +using Step.Database.Controllers; using Step.Model.DatabaseModels; using Step.Model.DTOModels.MaintenanceModels; using Step.NC; @@ -273,23 +274,22 @@ namespace Step.Controllers.WebApi if (!Request.Content.IsMimeMultipartContent()) throw new HttpResponseException(HttpStatusCode.UnsupportedMediaType); - // Create CustomMultipartFormDataStreamProvider + // Create CustomMultipartFormDataStreamProvider CustomMultipartFormDataStreamProvider provider = new CustomMultipartFormDataStreamProvider(MAINTENANCE_ATTACHMENT_PATH); + // MultipartFormDataStreamProvider provider = new MultipartFormDataStreamProvider(MAINTENANCE_ATTACHMENT_PATH); List files = new List(); // Read all contents of multipart message into CustomMultipartFormDataStreamProvider. - await Request.Content.ReadAsMultipartAsync(provider); + var result = await Request.Content.ReadAsMultipartAsync(provider); using (MaintenancesController maintenancesController = new MaintenancesController()) { foreach (MultipartFileData file in provider.FileData) { var fileName = Path.GetFileName(file.LocalFileName); - if (File.Exists(MAINTENANCE_ATTACHMENT_PATH + fileName)) - return BadRequest("file_already_exists"); files.Add(fileName); - maintenancesController.AddAttachment(fileName, maintenanceId); + maintenancesController.AddAttachment(file.Headers.ContentDisposition.FileName.Replace("\"", string.Empty), fileName, maintenanceId); } } @@ -316,10 +316,10 @@ namespace Step.Controllers.WebApi // Check if exist in db or physically if (attachment == null) return NotFound(); - if(!File.Exists(MAINTENANCE_ATTACHMENT_PATH + attachment.FileName)) + if (!File.Exists(MAINTENANCE_ATTACHMENT_PATH + attachment.LocalFileName)) return NotFound(); - - return new FileResult(MAINTENANCE_ATTACHMENT_PATH + attachment.FileName); + + return new FileResult(MAINTENANCE_ATTACHMENT_PATH + attachment.LocalFileName); } } @@ -336,24 +336,25 @@ namespace Step.Controllers.WebApi maintenancesController.DeleteAttachment(attachment); - if (File.Exists(MAINTENANCE_ATTACHMENT_PATH + attachment.FileName)) - File.Delete(MAINTENANCE_ATTACHMENT_PATH + attachment.FileName); + if (File.Exists(MAINTENANCE_ATTACHMENT_PATH + attachment.LocalFileName)) + File.Delete(MAINTENANCE_ATTACHMENT_PATH + attachment.LocalFileName); return Ok(); } } } - public class FileResult : IHttpActionResult { - private readonly string filePath; - private readonly string contentType; + private readonly string FilePath; + private readonly string ContentType; + private readonly string FileName; - public FileResult(string filePath, string contentType = null) + public FileResult(string filePath, string contentType = null, string fileName = null) { - this.filePath = filePath; - this.contentType = contentType; + FilePath = filePath; + ContentType = contentType; + FileName = fileName; } public Task ExecuteAsync(CancellationToken cancellationToken) @@ -363,11 +364,15 @@ namespace Step.Controllers.WebApi // Create response var response = new HttpResponseMessage(HttpStatusCode.OK) { - Content = new StreamContent(File.OpenRead(filePath)) // Set file + Content = new StreamContent(File.OpenRead(FilePath)) // Set file }; // Set header content type - var contentType = this.contentType ?? MimeMapping.GetMimeMapping(Path.GetExtension(filePath)); + var contentType = ContentType ?? MimeMapping.GetMimeMapping(Path.GetExtension(FilePath)); response.Content.Headers.ContentType = new MediaTypeHeaderValue(contentType); + response.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment") + { + FileName = FileName + }; return response; }, cancellationToken); @@ -383,7 +388,9 @@ namespace Step.Controllers.WebApi public override string GetLocalFileName(HttpContentHeaders headers) { - return headers.ContentDisposition.FileName.Replace("\"", string.Empty); + var fileName = headers.ContentDisposition.FileName.Replace("\"", string.Empty); + + return Path.GetFileNameWithoutExtension(fileName) + Guid.NewGuid() + Path.GetExtension(fileName); } } } \ No newline at end of file