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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
+ 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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