1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253 |
- using Microsoft.AspNetCore.Mvc;
- using Microsoft.AspNetCore.Mvc.Infrastructure;
- using Microsoft.Extensions.DependencyInjection;
- using Microsoft.Net.Http.Headers;
- using System;
- using System.IO;
- using System.Threading.Tasks;
- namespace Masuit.Tools.AspNetCore.ResumeFileResults.ResumeFileResult
- {
- /// <summary>
- /// 基于Stream的ResumeFileStreamResult
- /// </summary>
- public class ResumeFileStreamResult : FileStreamResult, IResumeFileResult
- {
- /// <summary>
- /// 构造函数
- /// </summary>
- /// <param name="fileStream">文件流</param>
- /// <param name="contentType">Content-Type</param>
- /// <param name="etag">ETag</param>
- public ResumeFileStreamResult(Stream fileStream, string contentType, string etag = null) : this(fileStream, MediaTypeHeaderValue.Parse(contentType), !string.IsNullOrEmpty(etag) ? EntityTagHeaderValue.Parse(etag) : null)
- {
- }
- /// <summary>
- /// 构造函数
- /// </summary>
- /// <param name="fileStream">文件流</param>
- /// <param name="contentType">Content-Type</param>
- /// <param name="etag">ETag</param>
- public ResumeFileStreamResult(Stream fileStream, MediaTypeHeaderValue contentType, EntityTagHeaderValue etag = null) : base(fileStream, contentType)
- {
- EntityTag = etag;
- EnableRangeProcessing = true;
- }
- /// <inheritdoc/>
- public string FileInlineName { get; set; }
- /// <inheritdoc/>
- public override Task ExecuteResultAsync(ActionContext context)
- {
- if (context == null)
- {
- throw new ArgumentNullException(nameof(context));
- }
- var executor = context.HttpContext.RequestServices.GetRequiredService<IActionResultExecutor<ResumeFileStreamResult>>();
- return executor.ExecuteAsync(context, this);
- }
- }
- }
|