FileDownloadController.cs 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Linq.Dynamic.Core;
  5. using Microsoft.AspNetCore.Mvc;
  6. using Microsoft.Extensions.Logging;
  7. using FMSAdmin.Data;
  8. using FMSAdmin.Helpers;
  9. using System.Collections;
  10. using System.Text.RegularExpressions;
  11. using FMSAdmin.Models;
  12. using FMSAdmin.Entities;
  13. using FMSApp.Services;
  14. using Microsoft.AspNetCore.Authorization;
  15. using FMSAdmin.Models.Formula;
  16. using FMSAdmin.Helpers.Formula;
  17. using FMSAdmin.Services;
  18. using System.IO;
  19. using OfficeOpenXml;
  20. using System.Data;
  21. using System.Net.Http;
  22. using System.Net.Http.Headers;
  23. using System.Net;
  24. namespace FMSAdmin.Controllers {
  25. [Authorize]
  26. [ApiController]
  27. [ApiVersion("1")]
  28. [Route("api/[controller]")]
  29. public class FileDownloadController : Controller {
  30. private readonly ILogger<FileDownloadController> _logger;
  31. private readonly StorageHelper _storage;
  32. public FileDownloadController(
  33. ILogger<FileDownloadController> logger,
  34. StorageHelper storage
  35. ) {
  36. _logger = logger;
  37. _storage = storage;
  38. }
  39. [AllowAnonymous]
  40. [HttpGet("DownloadFile")]
  41. public IActionResult DownloadFile(String filePath, String fileName) {
  42. try {
  43. return File(_storage.GetFileStream(filePath), "application/octet-stream", fileName);
  44. } catch (Exception ex) {
  45. _logger.LogError(ex.ToString());
  46. return Content("<html><head><meta charset='UTF-8'></head><body><script>alert('파일을 찾을 수 없습니다.');window.close();</script></body></html>", "text/html");
  47. }
  48. }
  49. [AllowAnonymous]
  50. [HttpGet("PDFViewer/{fileName}")]
  51. public IActionResult PDFViewer(String filePath, String fileName) {
  52. try {
  53. Response.Headers.Add("Content-Disposition", "inline;filename*=UTF-8'" + Uri.EscapeDataString(fileName));
  54. Response.Headers.Add("X-Content-Type-Options", "nosniff");
  55. Response.Headers.Add("filename", WebUtility.UrlEncode("anvd"));
  56. return File(System.IO.File.ReadAllBytes(_storage.GetLocalPath(filePath)), "application/pdf");
  57. } catch (Exception ex) {
  58. _logger.LogError(ex.ToString());
  59. return Content("<html><head><meta charset='UTF-8'></head><body><script>alert('파일을 찾을 수 없습니다.');window.close();</script></body></html>", "text/html");
  60. }
  61. }
  62. }
  63. }