using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc.Infrastructure; using Microsoft.Extensions.DependencyInjection; using Microsoft.Net.Http.Headers; using System; using System.Threading.Tasks; namespace Masuit.Tools.AspNetCore.ResumeFileResults.ResumeFileResult { /// /// 基于服务器虚拟路径路径的ResumePhysicalFileResult /// public class ResumeVirtualFileResult : VirtualFileResult, IResumeFileResult { /// /// 基于服务器虚拟路径路径的ResumePhysicalFileResult /// /// 文件全路径 /// Content-Type /// ETag public ResumeVirtualFileResult(string fileName, string contentType, string etag = null) : this(fileName, MediaTypeHeaderValue.Parse(contentType), !string.IsNullOrEmpty(etag) ? EntityTagHeaderValue.Parse(etag) : null) { } /// /// 基于服务器虚拟路径路径的ResumePhysicalFileResult /// /// 文件全路径 /// Content-Type /// ETag public ResumeVirtualFileResult(string fileName, MediaTypeHeaderValue contentType, EntityTagHeaderValue etag = null) : base(fileName, contentType) { EntityTag = etag; EnableRangeProcessing = true; } /// public string FileInlineName { get; set; } /// public override Task ExecuteResultAsync(ActionContext context) { if (context == null) { throw new ArgumentNullException(nameof(context)); } var executor = context.HttpContext.RequestServices.GetRequiredService>(); return executor.ExecuteAsync(context, this); } } }