TestController.cs 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139
  1. using Masuit.Tools.AspNetCore.ResumeFileResults.Extensions;
  2. using Masuit.Tools.AspNetCore.ResumeFileResults.ResumeFileResult;
  3. using Microsoft.AspNetCore.Hosting;
  4. using Microsoft.AspNetCore.Mvc;
  5. using System;
  6. using System.IO;
  7. namespace Masuit.Tools.AspNetCore.ResumeFileResults.WebTest.Controllers
  8. {
  9. /// <summary>
  10. /// 测试控制器
  11. /// </summary>
  12. [Route("file")]
  13. public class TestController : Controller
  14. {
  15. private const string EntityTag = "\"TestFile\"";
  16. private readonly IHostingEnvironment _hostingEnvironment;
  17. private readonly DateTimeOffset _lastModified = new DateTimeOffset(2016, 1, 1, 0, 0, 0, TimeSpan.Zero);
  18. /// <summary>
  19. ///
  20. /// </summary>
  21. /// <param name="hostingEnvironment"></param>
  22. public TestController(IHostingEnvironment hostingEnvironment)
  23. {
  24. _hostingEnvironment = hostingEnvironment;
  25. }
  26. [HttpGet("content/{fileName}/{etag}")]
  27. public IActionResult FileContent(bool fileName, bool etag)
  28. {
  29. string webRoot = _hostingEnvironment.WebRootPath;
  30. var content = System.IO.File.ReadAllBytes(Path.Combine(webRoot, "TestFile.txt"));
  31. ResumeFileContentResult result = this.ResumeFile(content, "text/plain", fileName ? "TestFile.txt" : null, etag ? EntityTag : null);
  32. result.LastModified = _lastModified;
  33. return result;
  34. }
  35. [HttpGet("content/{fileName}")]
  36. public IActionResult FileContent(bool fileName)
  37. {
  38. string webRoot = _hostingEnvironment.WebRootPath;
  39. var content = System.IO.File.ReadAllBytes(Path.Combine(webRoot, "TestFile.txt"));
  40. var result = new ResumeFileContentResult(content, "text/plain")
  41. {
  42. FileInlineName = "TestFile.txt",
  43. LastModified = _lastModified
  44. };
  45. return result;
  46. }
  47. [HttpHead("file")]
  48. public IActionResult FileHead()
  49. {
  50. ResumeVirtualFileResult result = this.ResumeFile("TestFile.txt", "text/plain", "TestFile.txt", EntityTag);
  51. result.LastModified = _lastModified;
  52. return result;
  53. }
  54. [HttpPut("file")]
  55. public IActionResult FilePut()
  56. {
  57. ResumeVirtualFileResult result = this.ResumeFile("TestFile.txt", "text/plain", "TestFile.txt", EntityTag);
  58. result.LastModified = _lastModified;
  59. return result;
  60. }
  61. [HttpGet("stream/{fileName}/{etag}")]
  62. public IActionResult FileStream(bool fileName, bool etag)
  63. {
  64. string webRoot = _hostingEnvironment.WebRootPath;
  65. FileStream stream = System.IO.File.OpenRead(Path.Combine(webRoot, "TestFile.txt"));
  66. ResumeFileStreamResult result = this.ResumeFile(stream, "text/plain", fileName ? "TestFile.txt" : null, etag ? EntityTag : null);
  67. result.LastModified = _lastModified;
  68. return result;
  69. }
  70. [HttpGet("stream/{fileName}")]
  71. public IActionResult FileStream(bool fileName)
  72. {
  73. string webRoot = _hostingEnvironment.WebRootPath;
  74. FileStream stream = System.IO.File.OpenRead(Path.Combine(webRoot, "TestFile.txt"));
  75. var result = new ResumeFileStreamResult(stream, "text/plain")
  76. {
  77. FileInlineName = "TestFile.txt",
  78. LastModified = _lastModified
  79. };
  80. return result;
  81. }
  82. [HttpGet("physical/{fileName}/{etag}")]
  83. public IActionResult PhysicalFile(bool fileName, bool etag)
  84. {
  85. string webRoot = _hostingEnvironment.WebRootPath;
  86. ResumePhysicalFileResult result = this.ResumePhysicalFile(Path.Combine(webRoot, "TestFile.txt"), "text/plain", fileName ? "TestFile.txt" : null, etag ? EntityTag : null);
  87. result.LastModified = _lastModified;
  88. return result;
  89. }
  90. [HttpGet("physical/{fileName}")]
  91. public IActionResult PhysicalFile(bool fileName)
  92. {
  93. string webRoot = _hostingEnvironment.WebRootPath;
  94. var result = new ResumePhysicalFileResult(Path.Combine(webRoot, "TestFile.txt"), "text/plain")
  95. {
  96. FileInlineName = "TestFile.txt",
  97. LastModified = _lastModified
  98. };
  99. return result;
  100. }
  101. [HttpGet("virtual/{fileName}/{etag}")]
  102. public IActionResult VirtualFile(bool fileName, bool etag)
  103. {
  104. ResumeVirtualFileResult result = this.ResumeFile("TestFile.txt", "text/plain", fileName ? "TestFile.txt" : null, etag ? EntityTag : null);
  105. result.LastModified = _lastModified;
  106. return result;
  107. }
  108. [HttpGet("virtual/{fileName}")]
  109. public IActionResult VirtualFile(bool fileName)
  110. {
  111. var result = new ResumeVirtualFileResult("TestFile.txt", "text/plain")
  112. {
  113. FileInlineName = "TestFile.txt",
  114. LastModified = _lastModified
  115. };
  116. return result;
  117. }
  118. }
  119. }