ControlController.cs 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. using FMSAdmin.Data;
  2. using Microsoft.AspNetCore.Mvc;
  3. using Microsoft.Extensions.Logging;
  4. using FMSAdmin.Helpers;
  5. using Microsoft.AspNetCore.Http;
  6. using Microsoft.AspNetCore.Authorization;
  7. using System;
  8. using System.IO;
  9. namespace FMSAdmin.Controllers {
  10. [ApiController]
  11. [ApiVersion("1")]
  12. [Route("api/[controller]")]
  13. public class ControlController : Controller {
  14. private readonly ILogger<ControlController> _logger;
  15. private readonly FMSContext _context;
  16. private readonly StorageHelper _storage;
  17. public ControlController(
  18. ILogger<ControlController> logger,
  19. FMSContext context,
  20. StorageHelper storage
  21. ) {
  22. _logger = logger;
  23. _context = context;
  24. _storage = storage;
  25. }
  26. [HttpPost]
  27. [Route("[action]")]
  28. public IActionResult Upload(IFormFile file) {
  29. var uploadFile = _storage.SaveTemp(file);
  30. return Ok(uploadFile);
  31. }
  32. [HttpPost]
  33. [Route("[action]")]
  34. public IActionResult UploadImage(IFormFile file) {
  35. var uploadFile = _storage.SaveTempImage(file);
  36. return Ok(uploadFile);
  37. }
  38. /// <summary>
  39. /// 웹에디터 업로드
  40. /// </summary>
  41. [HttpPost]
  42. [Route("[action]")]
  43. public IActionResult FroalaImageUpload(IFormFile file) {
  44. var today = DateTime.Now.ToString("yyyy-MM-dd");
  45. _storage.CreateDirectory($"/editor/{today}");
  46. // 파일명 중복처리
  47. var filename = file.FileName;
  48. var ext = Path.GetExtension(filename);
  49. var name = Path.GetFileNameWithoutExtension(filename);
  50. var filePath = $"/editor/{today}/{filename}";
  51. var count = 0;
  52. while (_storage.FileExists(filePath)) {
  53. filename = name + ("(" + (count + 1) + ")") + (ext.Length > 0 ? ext : "");
  54. filePath = $"/editor/{today}/{filename}";
  55. _logger.LogInformation("filePath:" + filePath);
  56. count++;
  57. }
  58. var uploadFile = _storage.SaveImage(filePath, file);
  59. return Ok(new {
  60. link = uploadFile.Url
  61. });
  62. }
  63. }
  64. }